File:  of Disk: Disks/MyPDP/m8-rka0-rkb0
(Source file text) 

	/
011401  0005		   UAC		/GET THE CHAR
011402  7450		SNA
011403  5777		 JMP I (EMREDY	/IGNORE NULLS
011404  3021		DCA ZTEM1	/KEEP FOR FOLLWING TESTS
011405  4135		JMS GET
011406  0056		   UCHAR	/
011407  7510		SPA
011410  5225		 JMP D6046X	/THIS CHAR HAS NOT YET BEEN ECHOED.
011411  7041		CIA
011412  1021		TAD ZTEM1	/COMPARE THIS CHAR AND LAST INPUT CHAR
011413  0052		AND C177	/STRIP EXCESS BITS IN UAC
011414  7650		SNA CLA		/IS THIS THE ECHO ?
011415  5256		 JMP KHEXT2	/YES, IGNORE IT
011416  1420		TAD I X		/SEE IF THE INPUT CHARACTER WAS A TAB
011417  1376		TAD (-211
011420  7640		SZA CLA		/TAB ?
011421  5227		 JMP D6046A	/NO
011422  1021		TAD ZTEM1	/YES, MUST IGNORE SPACES ECHOED...
011423  1375		TAD (-240
011424  0052		AND C177	/CLEAR EXCESS BITS IN UAC
011425  7650	D6046X,	SNA CLA		/SPACE ?
011426  5777		 JMP I (EMREDY	/YES, DON'T ECHO ! DON'T CLEAR UCHAR !
011427  4135	D6046A,	JMS GET		/NO, PUT IN OUTPUT BUFFER
011430  0005		   UAC
011431  4774		JMS I (FILLQ
011432  0030		   UBUFOUT	/ONE WORD TO OUTPUT BUFFER
011433  7650		SNA CLA		/CHAR ACCEPTED ?
011434  5251		 JMP KHEXT	/YES
		IFNDEF SINGL8 <
011435  4773		JMS I (EMINACT	/NO, DEACTIVATE BG >

	0002	O=BSIZE-1^POOLN%20^DGNTICK%36	/THIS IS FOR **2400 BAUD**
		IFZERO O <O=1>		/2400BAUD=240 CHARS/SEC=36^10 OCTAL
	0074	OO=BSIZE-1^POOLN%2%TTYMAX

011436  4002	D6046C,	JMS MONITOR	/
011437  0064		   STALL
011440  0001		   DGNTICK%12	/   O
011441  4123		JMS SETBASE	/RESTORE BASE
		IFNDEF SINGL8 <
011442  4135		JMS GET		/GET COUNTER OF OUTPUT BUFFER
011443  0030		   UBUFOUT
011444  1372		TAD (-OO	/NEARLY EMPTY ?
011445  7700		SMA CLA
011446  5236		 JMP D6046C	/
011447  4771		JMS I (EMACTIV	/ACTIVATE BG >
011450  5227		JMP D6046A	/TRY AGAIN

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 127

011451  4770	KHEXT,	JMS I (EMRUN	/RUN OUTPUT WRITER
011452  0033		   UWRTR
011453  4144		JMS PUT		/CLEAR UCHAR
011454  0056		   UCHAR	/
011455  5777		JMP I (EMREDY

011456  1420	KHEXT2,	TAD I X		/IF THE CHAR WAS CR
011457  1064		TAD M215
011460  7650		SNA CLA		/WE KNOW THAT A LF WAS ECHOED TOO
011461  1054		 TAD C212
011462  3420		DCA I X		/PUT IN UCHAR
011463  5777		JMP I (EMREDY

		/6031 TEST WHETHER THERE IS A NEW CHARACTER AVAILABLE
		DO6031,
		IFDEF SINGL8 <
		IFDEF SYRX02 <
			TAD (-DGNTICK^7	/SET COUNTER FOR 7 SECONDS >
		IFNDEF SYRX02 <
			TAD (-DGNTICK	/SET COUNTER FOR 1 SECOND >
			JMS PUT		/IN UTEM2
			   UTEM2	/ >
011464  4135	S8WAIT,	JMS GET		/
011465  0025		   UBUFIN
011466  7640		SZA CLA		/EMPTY ?
011467  5767		 JMP I (EMSKIP	/NO, LET BG SKIP
011470  7240		ACM1		/TEST IF JMP .-1 IS FOLLOWING
011471  4766		JMS I (TSTJMP	/IF THE CASE, WE HANG UP USER
011472  5777		 JMP I (EMREDY	/NO, NOT OBVIOUSLY WAITING
		IFDEF SINGL8 <
			JMS MONITOR	/WAIT 7 SECONDS FOR INPUT,
			   STALL	/THEN DEACTIVATE THE BG
			   DGNTICK%12	/
			JMS SETBASE	/
			JMS GET		/
			   UTEM2	/GET COUNTER
			CLA		/ONLY NEED X FOR SKIP
			ISZ I X		/UPDATE COUNTER
			 JMP S8WAIT	/ >
011473  4773		JMS I (EMINACT	/MAKE HIM INACTIVE NOW
011474  4002		JMS MONITOR	/EXIT UNTIL RUNNED BY INPUT READER
011475  1040		   EXIT

011476  4123	EMSTRT,	JMS SETBASE
011477  4771		JMS I (EMACTIV	/ACTIVATE BG
011500  5777		JMP I (EMREDY

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 128

011501  4765	DO6036,	JMS I (GETQ	/FETCH CHAR FROM BUFFER
011502  0025		   UBUFIN
011503  0364		AND (377
011504  4144	DO6032,	JMS PUT		/
011505  0005		   UAC		/STORE IN/CLEAR UAC
011506  4765	DO6030,	JMS I (GETQ
011507  0025		   UBUFIN
011510  4317		JMS ESCALT
011511  4144		JMS PUT
011512  0056		   UCHAR	/USED FOR SUPPRESSION OF BG-ECHO
011513  4763		JMS I (MTQ	/BUMP INPUT BUFFER
011514  0025		   UBUFIN
011515  5777		 JMP I (EMREDY	/EMPTY
011516  5777		JMP I (EMREDY	/CLA;JMP EMREDY

011517  0000	ESCALT,	0		/ROUTINE TO CONVERT 233 IN $
011520  1362		TAD (-233	/
011521  7450		SNA		/ESCAPE ?
011522  1361		 TAD ("$-233	/MAKE IT A $
011523  1360		TAD (233
011524  5717		JMP I ESCALT

011525  4765	DO6034,	JMS I (GETQ	/LOOK INTO BUFFER
011526  0025		   UBUFIN
011527  0364		AND (377
011530  7421	EMOR,	MQL
011531  4135		JMS GET		/
011532  0005		   UAC
011533  7501		MQA		/INCLUSIVE OR
011534  5757		JMP I (EMCLA	/STORE IN AC

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 129

011535  4756	EMSPY,	JMS I (EMFETCH	/GET PARAMETER = FIELD
011536  0047		AND C70
011537  1061		TAD C6201
011540  3343		DCA .+3
011541  4135		JMS GET
011542  0005		   UAC
011543  7402		 HLT		//CDF TO FIELD USER WANTS TO SEE
011544  3021		DCA ZTEM1
011545  1421		TAD I ZTEM1
011546  6211		CDF 10
011547  3420		DCA I X		/BACK TO UAC
011550  5767		JMP I (EMSKIP	/SKIP PARAMETER

011556  2200
011557  1362
011560  0233
011561  0011
011562  7545
011563  2661
011564  0377
011565  2721
011566  1227
011567  1207
011570  1273
011571  1246
011572  7704
011573  1255
011574  2600
011575  7540
011576  7567
011577  1213
	1600	PAGE

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 130

		/*******************************************************
		/***********   I N P U T   R E A D E R   ***************
		/*******************************************************

		/KHI IS A TASK DEDICATED TO READ CHARACTERS FROM AN
		/INPUT DEVICE AND PUT THEM INTO THE INPUT BUFFER.
		/IT ALSO TAKES CARE OF THE ECHO, BY PUTTING CHARS
		/INTO THE OUTPUT BUF AND STARTING THE OUTPUTWRITER .
		/ALSO IT LOOKS FOR CONTROL-B CHARACTERS IN THE INPUT.
		/^B WILL SET 'BGSTOP' AND THUS ESTABLISH ^B-MODE IN
		/WHICH KHI WILL ACCUMULATE ONE INPUT BUFFER OF COMMAND.
		/WHEN THE LINE IS CLOSED
		/WITH A CARRIAGE RETURN, KHI WILL CALL "CB" TO EXECUTE
		/THE COMMAND. IN CASE THE BGERR BIT GETS SET, IT WILL
		/CALL THE ERROR PRINTER "BE" AND ENTER ^B-MODE.

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 131

011600  4002	KHI0,	JMS MONITOR	/DETACHED BG, JUST STALL
011601  0064		   STALL	/AND TRY AGAIN LATER
011602  0012		   DGNTICK	/ONE SECOND IS AN EASY PACE
011603  4123	KHI11,	JMS SETBASE	/NECESSARY IN CASE OF TIMEOUT
011604  4135		JMS GET	
011605  0025		   UBUFIN
011606  7650		SNA CLA		/ANY INPUT WAITING ?
011607  5214		 JMP KHILP	/NO
011610  4777	KHIRUN,	JMS I (EMRUN	/START THE EMULATOR
011611  0034		   UCUR
011612  4777	KHI,	JMS I (EMRUN
011613  0033		   UWRTR
011614  1430	KHILP,	TAD I BASE
011615  0042		AND C3		/(BGERR+SWPERR
011616  7640		SZA CLA		/ERROR IN EMULATION OR SWP ?
011617  5776		 JMP I (KHI8	/Y, GET INTO ^B-MODE
011620  4135		JMS GET
011621  0057		   UKB
011622  7450		SNA		/DETACHED BG ?
011623  5200		 JMP KHI0	/YES, STALL, THEN TRY AGAIN
011624  3240		DCA KHINAM	/
011625  4135		JMS GET		/GET NUMBER OF CHARACTERS IN INPUT
011626  0025		   UBUFIN	/BUFFER. WE WILL USE THAT TO DETERMINE
011627  7110		CLL RAR		/
011630  1071		TAD M4		/THE OPTIMUM TIMEOUT FOR THE NEXT
011631  7500		SMA		/CHARACTER. THIS TIMEOUT IN FACT
011632  7200		 CLA		/DETERMINES THE ACTIVATION RATE FOR
011633  1043		TAD C4		/BACKGROUNDS.
011634  7041		CIA		/DELAY=#CHARS*.1+.3 SECONDS
011635  1072		TAD M3		/
011636  4002		JMS MONITOR
011637  0024		   CALL
011640  4044	KHINAM,	   K1TCBP
011641  5324		 JMP KHI3	/INPUT HANDLER BUSY: STALL AND TRY
011642  7550		SPA SNA		/IGNORE NULL'S
011643  5203		 JMP KHI11	/TIMEOUT, ACTIVATE BG
011644  3021		DCA ZTEM1	/SAVE TEMP
011645  4123		JMS SETBASE	/FOR WHICH BG? MAY HAVE CHANGED!

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 132

011646  1021		TAD ZTEM1	/
011647  1375		TAD (-203	/TEST FOR ^C
011650  7440		SZA		/
011651  7001		IAC		/TEST FOR ^B
011652  7440		SZA
011653  1374		TAD (202-217	/TEST FOR ^O
011654  7450		SNA
011655  5773		 JMP I (KHI4	/CLEAR IN AND OUT BUFFERS, RETEST ^B
011656  1071		TAD M4		/TEST FOR ^S
011657  7450		SNA
011660  5334		 JMP KHISTP	/STOP OUTPUT WRITER
011661  1041		TAD C2		/TEST FOR ^Q
011662  7650		SNA CLA
011663  5772		 JMP I (KHICON	/RESTART OUTPUT WRITER
011664  4771	KHINRM,	JMS I (KHTEST	/CONTROL GROUP OR PRINTING GROUP ?
011665  7000		 NOP		/DON'T ECHO CONTROL CHAR
011666  7330		 AC4000		/NON-ECHO MODE
011667  1021		TAD ZTEM1	/ENTER CHAR INTO INPUT BUF
011670  4770		JMS I (FILLQ	/ONE WORD TO INPUT BUFFER
011671  0025		   UBUFIN
011672  7650		 SNA CLA
011673  5277		JMP KHECHO	/OK
011674  4767		JMS I (KHIOUT	/GIVE WARNING (BELL)
011675  0207		   207
011676  5212		JMP KHI		/BUFFER FULL, KEEP LISTENING

011677  4771	KHECHO,	JMS I (KHTEST	/ECHO OR NOT - THAT'S THE QUESTION.
011700  5210		 JMP KHIRUN	/CONTROL CHAR - DON'T ECHO, ACTIVATE BG
011701  5210		 JMP KHIRUN	/NON-ECHO MODE
011702  1021		TAD ZTEM1
011703  4766		JMS I (ESCALT	/CONVERT 233 TO $
011704  4767		JMS I (KHIOUT
011705  1021		TAD ZTEM1
011706  1064		TAD M215
011707  7440		SZA		/CR IS VERY DELICATE
011710  5320		 JMP KHI12	/NOT CR, JUST WAIT FOR MORE
011711  1054		TAD C212	/ADD A LF TO THE CR
011712  4767		JMS I (KHIOUT
011713  1430		TAD I BASE
011714  0365		AND (BGSTOP
011715  7640		SZA CLA		/ARE WE IN ^B MODE ?
011716  5764		 JMP I (KHI5	/YES, GO THERE
011717  5210		JMP KHIRUN	/AND ACTIVATE THE BG

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 133

		IFNDEF SINGL8 <
011720  1363	KHI12,	TAD (215-233
011721  7650		SNA CLA		/ESCAPE IS ANOTHER PET CHARACTER
011722  5210		 JMP KHIRUN	/RUSH THE BACKGROUND ACTIVE
011723  5212		JMP KHI		/NO, DON'T PANIC >
		IFDEF SINGL8 <
		KHI12,	CLA		/ALWAYS START THE
			JMP KHIRUN	/BACKGROUND IMMEDIATELY >

011724  4002	KHI3,	JMS MONITOR
011725  0064		   STALL
011726  0002		   DGNTICK%5
011727  4123		JMS SETBASE
011730  4135		JMS GET
011731  0060		   UTTY
011732  3240		DCA KHINAM
011733  5236		JMP KHINAM-2

011734  4135	KHISTP,	JMS GET		/STOP OUTPUT WRITER
011735  0033		   UWRTR
011736  3341		DCA .+3
011737  4002		JMS MONITOR
011740  0034		   STOP
011741  0000		   0
011742  7402		   HLT		/NAME ? NOT ? FOUND ?
011743  4123		JMS SETBASE
011744  5214		JMP KHILP
011745  6203	EMTIME,	CIF CDF 0	//YOU NEVER KNOW
011746  1762		TAD I (TIME+3	//FETCH # HOURS - 24
011747  0050		AND C77		//THE PROBABILITY IS: 2.5 E-9
011750  7002		BSW		//
011751  1761		TAD I (TIME+2	//FETCH # MINUTES-60
011752  6213		CIF CDF 10	/
011753  1360		TAD (3074	/DECIMAL: 2460
011754  5757		JMP I (EMCLA	/STORE IN USERS AC: HHH.HHH.MMM.MMM
011757  1362
011760  3074
011761  0274
011762  0275
011763  7762
011764  2027
011765  1000
011766  1517
011767  2134
011770  2600
011771  2000
011772  2065
011773  2056
011774  7763
011775  7575
011776  2143
011777  1273
	2000		PAGE

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 134

		/THIS ROUTINE DETERMINES WHETHER A CHAR IS IN THE CONTROL-GROUP
		/OR IN THE PRINTING GROUP: 211,215,233 AND 240 - 376.
		/IN FACT IT HAS THREE RETURNS:
		/1 - CHAR IS IN CONTROL-GROUP
		/2 - CHAR IS IN PRINTING GROUP, BUT ECHO IS DISABLED
		/3 - CHAR IS IN PRINTING GROUP AND ECHO IS ENABLED

012000  0000	KHTEST,	0		/SKIP IF 'PRINTING' CHAR.
012001  1021		TAD ZTEM1
012002  1377		TAD (-240
012003  7510		SPA
012004  5211		 JMP KHT1
012005  1376		TAD (240-377
012006  7710		SPA CLA
012007  5220		 JMP KHT2	/PRINTING GROUP; IS ECHO ENABLED ?
012010  5600		JMP I KHTEST	/CONTROL-GROUP, TAKE FIRST RETURN
012011  1375	KHT1,	TAD (240-211
012012  7440		SZA
012013  1071		 TAD M4		/(211-215
012014  7440		SZA		/CARRIAGE RETURN ?
012015  1374		 TAD (215-233
012016  7640		SZA CLA		/ESCAPE ?
012017  5600		 JMP I KHTEST	/CONTROL GROUP, TAKE FIRST RETURN
012020  2200	KHT2,	ISZ KHTEST	/PRINTING CHARACTER
012021  4135		JMS GET
012022  0045		   UECHO	/ECHO OR NOT ?
012023  7700		SMA CLA
012024  2200		 ISZ KHTEST	/ECHO, TAKE THIRD RETURN
012025  5600		JMP I KHTEST

012026  4123	KHIST,	JMS SETBASE	/START IN CONTROL/B MODE, R<CR> IN BUFFER
012027  1030	KHI5,	TAD BASE
012030  4002		JMS MONITOR	/CALL THE CTRLB TASK
012031  0024		   CALL
012032  0602		   "C^100+"B&3777
012033  5230		 JMP .-3	/BUSY ?
012034  3021		DCA ZTEM1
012035  4123		JMS SETBASE
012036  1021		TAD ZTEM1	/LOOK WHAT W'VE GOT
012037  7450		SNA
012040  5245		 JMP KHI51	/GO BACK TO NORMAL PROCESSING
012041  7710		SPA CLA		/
012042  4334		JMS KHIOUT	/ERROR
012043  0277		   "?
012044  5312		JMP KHI21	/TRY AGAIN
012045  1430	KHI51,	TAD I BASE
012046  0373		AND (-BGSTOP-LONG-1
012047  3430		DCA I BASE	/CLEAR BGSTOP
012050  4772		JMS I (EMBSINT	/TEL BS WE'RE IN THE GAME AGAIN
012051  4135		JMS GET		/UNSTACK ECHO-SUPPRESS BIT
012052  0045		   UECHO
012053  7104		CLL RAL
012054  3420		DCA I X
012055  5771		JMP I (KHIRUN	/GO !

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 135

012056  4770	KHI4,	JMS I (CLRQ	/CLEAR INPUT AND OUTPUT BUFFERS
012057  0025		   UBUFIN
012060  4770		JMS I (CLRQ
012061  0030		   UBUFOUT
012062  1430		TAD I BASE
012063  0367		AND (-LONG-1	/CLEAR LONG FOR GOOD RESPONSE
012064  3430		DCA I BASE
012065  4135	KHICON,	JMS GET		/RESTART OUTPUT WRITER
012066  0033		   UWRTR
012067  3273		DCA .+4
012070  1021		TAD ZTEM1	/SAVE CHAR
012071  4002		JMS MONITOR
012072  0030		   RESTRT
012073  0000		   0
012074  7402		 HLT		/NAME ? NOT ? FOUND ?
012075  3021		DCA ZTEM1	/RESTORE CHAR
012076  4123		JMS SETBASE
012077  1021		TAD ZTEM1	/
012100  1366		TAD (-221	/
012101  7450		SNA		/WAS IT ^Q ?
012102  5765		 JMP I (KHILP	/YES, IGNORE
012103  1045		TAD C17		/ (221-202
012104  7640		SZA CLA		/WAS IT ^B ?
012105  5764		 JMP I (KHINRM	/NO, EITHER ^C,^O : PUT IN BUFFER
012106  4334		JMS KHIOUT	/YES, PRINT ^B
012107  0336		   "^
012110  4334		JMS KHIOUT
012111  0302		   "B
012112  4135	KHI21,	JMS GET		/STACK HIS ECHO-SUPPRESS BIT
012113  0045		   UECHO
012114  7510		SPA
012115  7110		 CLL RAR
012116  3420		DCA I X
012117  1055		TAD C215	/PRINT CRLF B]
012120  4334		JMS KHIOUT
012121  1054		TAD C212
012122  4334		JMS KHIOUT
012123  4334		JMS KHIOUT
012124  0302		   "B
012125  4334		JMS KHIOUT
012126  0276		   276		/THE GREATER-THAN SYMBOL
012127  1430		TAD I BASE
012130  0363		AND (-BGSTOP-BGERR-SWPERR-LONG-1
012131  1362		TAD (BGSTOP	/SET BGSTOP: WE ARE IN ^B-MODE
012132  3430		DCA I BASE
012133  5761		JMP I (KHI	/START OUTPUT WRITER AND LOOK FOR COMMAND

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 136

012134  0000	KHIOUT,	0		/ROUTINE TO PUT ONE CHAR IN OUTPUT BUFFER
012135  7450		SNA		/CHAR IN AC ?
012136  1734		 TAD I KHIOUT	/NO, GET PARAMETER
012137  4760		JMS I (FILLQ
012140  0030		   UBUFOUT
012141  7300		 CLA CLL	/FULL ! .....
012142  5734		JMP I KHIOUT

012143  4770	KHI8,	JMS I (CLRQ	/HERE IF ERROR OCCURRED
012144  0025		   UBUFIN
012145  1030		TAD BASE
012146  4002		JMS MONITOR
012147  0024		   CALL
012150  0505		   "B^100+"E&3777
012151  5346		 JMP .-3
012152  4123		JMS SETBASE
012153  5312		JMP KHI21

012160  2600
012161  1612
012162  1000
012163  6574
012164  1664
012165  1614
012166  7557
012167  7577
012170  2731
012171  1610
012172  1263
012173  6577
012174  7762
012175  0027
012176  7641
012177  7540
	2200	PAGE

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 137

012200  0000	EMFETCH,0		/FETCH (PC+(AC)) FROM USER INSTR. FIELD
012201  3025		DCA ZTEM5	/SAVE AC
012202  4135		JMS GET		/
012203  0003		   UPC
012204  1025		TAD ZTEM5
012205  3025		DCA ZTEM5	/PC+AC
012206  2020		ISZ X		/ADVANCE TO UFLDS
012207  1420		TAD I X		/GET USERS FIELD BITS
012210  4777		JMS I (EMGETF	/GET REAL FIELD (WON'T SWAP)
012211  4101		CDTOAC		//THIS MEANS THAT INST.FLD IS IN 'XACCDF'
012212  1425		TAD I ZTEM5	//FETCH A WORD
012213  6211		CDF 10		/
012214  5600		JMP I EMFETCH	/RETURN TO USER WITH WORD IN AC

012215  7307	EMHAND,	AC0004		/TEST FOR JMP .+4 FOLLOWING 6000
012216  4776		JMS I (TSTJMP	/
012217  5775		 JMP I (EMERROR	/IT WAS A RANDOM 6000
012220  1030		TAD BASE
012221  1374		TAD (UDTV-1	/POINTER TO UDTV
012222  3010		DCA AUTO10
012223  7301		AC0001
012224  4200		JMS EMFETCH	/GET FUNCTION WORD
012225  3020		DCA X
012226  1020		TAD X
012227  0047		AND C70
012230  1373		TAD (-BGCORE^10
012231  7700		SMA CLA		/LEGAL FIELD ?
012232  5775		 JMP I (EMERROR	/HE TRIES TO USE NON-EXISTENT MEMORY
012233  1020		TAD X
012234  3410		DCA I AUTO10	/STORE IN UDTV
012235  7326		AC0002
012236  4200		JMS EMFETCH	/GET BUFFER ADDRESS
012237  3410		DCA I AUTO10	/STORE IN UDTV+1
012240  7325		AC0003
012241  4200		JMS EMFETCH	/GET BLOCK NUMBER
012242  3410		DCA I AUTO10	/STORE IN UDTV+2
012243  5772		JMP I (EMHD	/DISPATCH VIA HNDTAB

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 138

012244  4135	EMCHNL,	JMS GET		/
012245  0005		   UAC		/GET CHANNEL NUMBER
012246  7640		SZA CLA		/SYS: ?
012247  5274		 JMP NOTSYS	/NO
012250  1374		TAD (UDTV-1	/SEE IF HE'S LOADING KBM OR CD.
012251  1030		TAD BASE
012252  3010		DCA AUTO10
012253  1410		TAD I AUTO10
012254  0047		AND C70
012255  1410		 TAD I AUTO10
012256  7650		SNA CLA		/FIELD 0, ADDRESS 0 ?
012257  1410		TAD I AUTO10
012260  1070		TAD M7
012261  7440		SZA		/READING KBM ?
012262  1371		 TAD (-51+7
012263  7640		SZA CLA		/OR READING CD ?
012264  5274		 JMP NOTSYS	/NO, NO RELEASE
012265  4777		JMS I (EMGETF	/GET FIELD 0 INCORE
012266  4101		CDTOAC		//
012267  7332		AC2000		//
012270  0474		AND I C7777	//IS BATCH ACTIVE IN THE BG ?
012271  6211		CDF 10
012272  7650		SNA CLA		/
012273  4770		 JMS I (EMREL	/NO, RELEASE HIS DEVICES
012274  4135	NOTSYS,	JMS GET
012275  0005		   UAC
012276  0042		AND C3		/GET CHANNEL NUMBER
012277  7104		CLL RAL		/ *2
012300  4135		JMS GET		/FETCH TYPE WORD
012301  0036		   UCHNL0+1
012302  0044		AND C7		/EXTRACT UNIT NUMBER
012303  7421		MQL
012304  1420		TAD I X
012305  7006		RTL		/WRITE ENABLE TO LINK
012306  7620		SNL CLA		/WRITE ENABLE ?
012307  5314		 JMP NOCHCK	/YES, NO NEED TO CHECK FOR WRITE
012310  4135		JMS GET
012311  0012		   UDTV		/GET FUNCTION WORD: READ ONLY !
012312  7710		SPA CLA
012313  5361		 JMP EMDSK1	/THEY ARE TRYING TO FOOL US
012314  4135	NOCHCK,	JMS GET		/GET FUNCTION WORD AGAIN
012315  0012		   UDTV
012316  0067		AND C7770
012317  7501		MQA		/ADD UNIT NUMBER
012320  3420		DCA I X
012321  1420		TAD I X
012322  4777		JMS I (EMGETF	/LOAD TARGET FIELD AND !LOCK! IT
012323  7421		MQL		/THATS THE REAL FIELD NUMBER
012324  4135		JMS GET		/AND ONCE AGAIN THE FUNCTION WORD
012325  0012	CUDTV,	   UDTV
012326  0367		AND (7707	/ZERO FIELD BITS
012327  7501		MQA		/OR-IN FIELD BITS
012330  3420		DCA I X		/AND RESTORE

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 139

012331  4123	EMDSK0,	JMS SETBASE	/(IN CASE THIS IS A RETRY)
012332  4135		JMS GET
012333  0005		   UAC
012334  0042		AND C3
012335  7104		CLL RAL		/ *2
012336  4135		JMS GET		/GET TASK NAME
012337  0035		   UCHNL0
012340  7450		SNA		/CHANNEL OPEN ?
012341  5361		 JMP EMDSK1	/NO, ERROR !
012342  3347		DCA CHNDRV	/NAME OF DRIVER TASK
012343  1030		TAD BASE
012344  1325		TAD CUDTV
012345  4002		JMS MONITOR
012346  0024		   CALL
012347  0000	CHNDRV,	   0		/GETS TASK NAME
012350  5331		 JMP EMDSK0	/TASK BUSY, RETRY

012351  3354		DCA .+3
012352  4002		JMS MONITOR
012353  0044		   WAIT
012354  0000		   0
012355  7421		MQL		/POSSIBLE ERROR CODE
012356  4123		JMS SETBASE
012357  7701		CLA MQA
012360  7640		SZA CLA
012361  7330	EMDSK1,	 AC4000
012362  5766		JMP I (EMCLA	/STORE IN UAC AND QUIT


012366  1362
012367  7707
012370  1074
012371  7736
012372  0552
012373  7700
012374  0011
012375  0723
012376  1227
012377  0650
	2400	PAGE

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 140

		/************************************************************
		/*************   O U T P U T   W R I T E R   ****************
		/************************************************************

		/KHO IS A TASK, DEDICATED TO TRANSPORT CHARACTERS FROM
		/THE TERMINAL OUTPUT BUFFER TO THE TERMINAL.
		/WHEN THE BUFFER IS EMPTY, IT STOPS AND MUST BE 'RUN'

012400  4002	KHO2,	JMS MONITOR
012401  0064		   STALL
012402  0005		   DGNTICK%2
012403  4123	KHO,	JMS SETBASE
012404  7200	KHO1,	CLA		/!
012405  4135		JMS GET
012406  0060		   UTTY
012407  7450		SNA		/DETACHED BG ?
012410  5200		 JMP KHO2	/YES, WAIT TILL ATTACHED
012411  3223		DCA KHCALL	/DRIVER NAME
012412  4135		JMS GET	
012413  0030		   UBUFOUT
012414  7650		SNA CLA		/MORE CHAR IN THE BUFFER ?
012415  5232		 JMP KHEXIT	/NO, QUIT
012416  4777		JMS I (GETQ	/GET NEXT CHAR
012417  0030		   UBUFOUT	/FROM OUTPUT BUFFER
012420  0376		AND (377	/ONLY 8 BITS
012421  4002		JMS MONITOR	/AND PUT IT OUT
012422  0024		   CALL
012423  4034	KHCALL,	   T1TCBP	/NAME OF OUTPUT TASK
012424  5200		 JMP KHO2       /OUTPUT TASK BUSY:LOOP
012425  4123		JMS SETBASE
012426  4775	KHLT,	JMS I (MTQ	/NOW REMOVE THE CHAR FROM THE BUFFER
012427  0030		   UBUFOUT
012430  7610		 SKP CLA	/EMPTY, EXIT
012431  5204		JMP KHO1
012432  4002	KHEXIT,	JMS MONITOR	/HALT THE OUTPUT WRITER
012433  1040		   EXIT

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 141

		/CHANNEL ASSIGNMENT ROUTINE
		/THIS ROUTINE IS CALLED VIA A GIANT IOT(5)
		/PARAMETERS FROM THE BACKGROUND:
		/
		/	CHANNEL NUMBER 0-3
		/	TASK NAME
		/	DEVICE TYPE AND UNIT NUMBER

012434  7301	EMOPEN,	AC0001
012435  4774		JMS I (EMFETCH	/GET CHANNEL NUMBER
012436  3021		DCA ZTEM1	/
012437  7326		AC0002
012440  4774		JMS I (EMFETCH	/GET DRIVER TASK NAME
012441  3022		DCA ZTEM2	/
012442  7325		AC0003
012443  4774		JMS I (EMFETCH	/GET TYPE AND UNIT NUMBER
012444  3023		DCA ZTEM3	/
012445  1021		TAD ZTEM1
012446  0373		AND (7774
012447  7640		SZA CLA		/MUST BE 0-3
012450  5772		 JMP I (EMERROR
012451  1021		TAD ZTEM1
012452  7104		CLL RAL
012453  1030		TAD BASE
012454  1371		TAD (UCHNL0-1	/INDEX CHANNEL TABLE
012455  3010		DCA AUTO10
012456  1022		TAD ZTEM2
012457  3410		DCA I AUTO10	/ENTER TASK NAME IN WORD 0
012460  1023		TAD ZTEM3
012461  3410		DCA I AUTO10	/ENTER TYPE IN WORD 1
012462  5770		JMP I (EMCLA	/CLEAR USER AC AND RETURN


/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 142

		IFDEF DKUSED <
		/THIS TASK PERFORMS THE CONVERSION BETWEEN A VIRTUAL DISK
		/REQUEST AND A TRUE PHYSICAL DISK REQUEST. IT MAY BE CALLED
		/AS AN ORDINARY BLOCKTRANSFER MODULE (WITHOUT QUEING)
		/AND WILL TRANSFORM THE CALLERS REQUEST ACCORDING TO THE 
		/DEFINITIONS FOUND IN 'DSKTAB', WHICH SHOULD BE IN FIELD 1 AND
		/MUST BE SETUP BY THE POWERUP SEQUENCE. DSKTAB SHOULD CONTAIN
		/EIGHT ENTRIES OF FOUR WORDS EACH DESCRIBING A VIRTUAL DISK
		/LAYOUT OF EACH ENTRY:
		/
		/WORD 0:	NAME OF HANDLER TASK
		/WORD 1:	BITS	9-11=PHYSICAL UNIT NUMBER
		/WORD 2:	RELATIVE BLOCK # 0
		/WORD 3:	LAST BLOCK+1 (PHYSICAL)
		/
		/IF THE TRANSFER GOES ACROSS THE BOUNDS OF THE VIRTUAL DISK,
		/THE TRANSFER IS NOT DONE AND A HARDERR STATUS IS RETURNED.

012463  7450	DK,	SNA		/CLOSE ?
012464  5357		 JMP DKCLOSE
012465  3021		DCA ZTEM1	/POINTER TO USERS DTV
012466  1434		TAD I ZMYCDF	/CDF TO USERS DTV, USED TO INITIALIZE
012467  3306		DCA DKCDF	/CDF-USER ROUTINE
012470  1421		TAD I ZTEM1	/FETCH FUNCTION WORD
012471  0044		AND C7		/EXTRACT UNIT NUMBER
012472  3025		DCA ZTEM5
012473  1025		TAD ZTEM5
012474  7106		CLL RTL		 /MULTIPLY BY 4
012475  1367		TAD (DSKTAB-1	/INDEX IN DISK DESCRIPTOR TABLE
012476  6211		CDF 10		/DSKTAB IS IN FIELD 10
012477  3010		DCA AUTO10	/
012500  1410		TAD I AUTO10	/FIRST WORD CONTAINS TASK NAME
012501  7450		SNA		/IS THIS UNIT DEFINED ?
012502  5356		 JMP DKERROR	/NO, ZERO NAME IS ILLEGAL
012503  3345		DCA DKNAME	/NAME OF HANDLER TASK
012504  1410		TAD I AUTO10	/GET WORD 1
012505  3362		DCA DKDTV	/BUILD A NEW DTV, THIS IS THE TRUE UNIT #

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 143

012506  7402	DKCDF,	HLT		/CDF TO CALLERS FIELD
012507  1421		TAD I ZTEM1	/GET REST OF USERS FUNCTION WORD
012510  0067		AND C7770	/MASK OF UNIT #
012511  1362		TAD DKDTV	/GET TRUE UNIT #
012512  3362		DCA DKDTV	/THIS IS THE FINAL FUNCTION WORD
012513  2021		ISZ ZTEM1	/BUMP POINTER TO USERS DTV
012514  1421		TAD I ZTEM1	/GET USERS BUFFER ADDRESS
012515  3363		DCA DKDTV+1
012516  2021		ISZ ZTEM1
012517  1421		TAD I ZTEM1	/GET VIRTUAL BLOCK #
012520  6211		CDF 10
012521  1410		TAD I AUTO10	/ADD OFFSET TO OBTAIN PHYSICAL BLOCK #
012522  3364		DCA DKDTV+2	/AND STORE IT IN DKDTV
012523  1362		TAD DKDTV	/NOW CHECK IF WHOLE TRANSFER
012524  0060		AND C3700	/IS WITHIN THE RANGE. GET LENGTH
012525  7450		SNA
012526  7330		 AC4000
012527  7002		BSW
012530  7011		IAC RAR		 /MAKE # BLOCKS
012531  7100		CLL
012532  1364		TAD DKDTV+2	/ADD START BLOCK #
012533  7041		CIA
012534  1410		TAD I AUTO10	/ADD MAXIMUM ALLOWED
012535  7620		SNL CLA		 /OVERFLOW ?
012536  5356		 JMP DKERROR	/YES, TRANSFER OUT OF RANGE
012537  4002		JMS MONITOR	/NOW RESERVE A SLOT FOR THE USER TO WAIT
					/LET CALLER CONTINUE WITH SLOT # IN AC
012540  0061		   RESERV RETURN CONTINUE
012541  3355		DCA DKSLT2
		/	CDTOIF
012542  1366		TAD (DKDTV	/GET POINTER TO DKDTV
012543  4002		JMS MONITOR
012544  0024		   CALL		 /CALL SYSTEM HANDLER
012545  2631	DKNAME,	"S^100+"Y&3777
012546  5343		 JMP .-3	/BUSY ?
012547  3352		DCA DKSLT1
012550  4002		JMS MONITOR
012551  0044		   WAIT
012552  0000	DKSLT1,	   0
012553  4002		JMS MONITOR	/PASS STATUS TO USER
012554  1014		   SIGNAL HALT CLEAR
012555  0000	DKSLT2,	   0

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 144

012556  1373	DKERROR,TAD (-HRDERR
012557  1074	DKCLOSE,TAD M1		/
012560  4002		JMS MONITOR
012561  1040		   EXIT

012562  0000	DKDTV,	ZBLOCK 3	/HERE THE TRANSFER VECTOR IS BUILD
					/END IFDEF DKUSED >

012566  2562
012567  7577
012570  1362
012571  0034
012572  0723
012573  7774
012574  2200
012575  2661
012576  0377
012577  2721
	2600	PAGE

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 145

		/THIS IS THE QUEUE HANDLING PACKAGE FOR THE MULTI8
		/TERMINAL IO QUEUES. IT IS BASED ON THE USAGE OF A POOL OF
		/BLOCKS OF 2^N WORDS EACH. THESE BLOCKS ARE USED TO STORE
		/2^N-1 CHARACTERS AND A POINTER TO THE NEXT BLOCK IN THE QUEUE.
		/EACH QUEUE IS BASED ON A THREE-WORD DESCRIPTOR:
		/
		/COUNTER:	CONTAINS THE NUMBER OF CHARACTERS IN THE QUEUE
		/READP:		POINTER TO THE START OF THE FIRST BLOCK IN QUEUE
		/WRITEP:	POINTER TO THE LAST BLOCK IN THE QUEUE
		/
		/WHEN THE QUEUE IS FILLED, ADDITIONAL BLOCKS MAY BE LINKED TO
		/IT. THESE BLOCKS ARE OBTAINED FROM A QUEUE AT LOCATION 'FREE'.
		/ON READING CHARACTERS FROM THE QUEUE, EMPTY BLOCKS ARE RETURNED TO
		/THE FREE LIST, EXCEPT FOR THE LAST BLOCK, WHICH IS NEVER RELEASED.
		/THE PACKAGE CONTAINS 4 ROUTINES:
		/
		/FILLQ:	ENTERS ONE CHARACTER IN THE QUEUE
		/MTQ:	REMOVES ONE CHAR FROM THE QUEUE
		/GETQ:	GETS THE NEXT CHARACTER FROM THE QUEUE, WITHOUT
		/	REMOVING IT
		/CLRQ:	ZERO'S A QUEUE
		/
		/		***** NOTE *****
		/	ONLY FILLQ AND MTQ ARE CROSS-FIELD CALLABLE
		/
	2661	XCOUNT=MTQ
	2721	XREADP=GETQ
	2731	XWRITEP=CLRQ
		IFZERO BGMAX-1 <
		BSIZE=40
		FMASK=C37
		POOLN=2 >
		IFZERO BGMAX-2 <
		BSIZE=40
		FMASK=C37
		POOLN=4 >
		IFZERO BGMAX-3 <
	0020	BSIZE=20		/BLOCK SIZE, MUST BE 2^N
	0045	FMASK=C17		/ADDRESS FOR MASK
	0010	POOLN=10		/NUMBER OF BLOCKS IN THE POOL >
		IFZERO BGMAX-4 <
		BSIZE=20
		FMASK=C17
		POOLN=20 >
		IFZERO BGMAX-5 <
		BSIZE=10
		FMASK=C7
		POOLN=40 >
		IFNZRO 5-BGMAX&4000 <
		BSIZE=10
		FMASK=C7
		POOLN=100 >

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 146

012600  0000	FILLQ,	0		/ENTER WITH CHAR IN AC
012601  7421		MQL		/STORE FOR A WHILE
012602  1200		TAD FILLQ	/CALL COMMON SETUP CODE
012603  4361		JMS SETUP	/
012604  7001		IAC		/
012605  3331		DCA XWRITEP	/
012606  1731		TAD I XWRITEP	/SETUP POINTER TO STORE
012607  3020		DCA X		/THE CHARACTER
012610  7701		CLA MQA		/STORE CHAR IN THE BUFFER
012611  3420		DCA I X		/
012612  7301		AC0001		/
012613  1020		TAD X		/GET POINTER TO NEXT LOCATION
012614  0045		AND FMASK	/
012615  7640		SZA CLA		/PAST END OF BLOCK ?
012616  5250		 JMP FILLQ1	/NO, NO PROBLEMS THIS TIME
012617  1121		TAD FRECNT	/GET NUMBER OF FREE BLOCKS
		IFZERO BSIZE-10 < CLL RTL;RAL >
012620  7106	IFZERO BSIZE-20 < CLL RTL;RTL >
012621  7006
		IFZERO BSIZE-40 < CLL RTL;RTL;RAL >
012622  7041		CIA		/
012623  1121		TAD FRECNT	/1 PLACE IN BLOCKLET IS POINTER
012624  1661		TAD I XCOUNT	/SEE IF WE HIT THE MAXIMUM ALLOWED
012625  7700		SMA CLA		/TOO MUCH ?
012626  5256		 JMP FERROR	/YES, ERROR RETURN
012627  1020		TAD X		/YES, BACKUP TO BEGIN OF BLOCK
012630  0377		AND (-BSIZE	/
012631  3020		DCA X		/
012632  1120		TAD FREE	/POINTER TO FIRST BLOCK ON FREE CHAIN
012633  7450		SNA		/FREE QUEUE EMPTY ?
012634  5256		 JMP FERROR	/YES, SORRY
012635  3420		DCA I X		/NO, PUT ADDRESS OF FREE BLOCK IN LAST
012636  1120		TAD FREE	/BLOCK AND PREPARE X FOR WRITEP
012637  3020		DCA X		/
012640  1520		TAD I FREE	/
012641  3361		DCA SETUP	/POINTER TO NEXT FREE BLOCK
012642  3520		DCA I FREE	/ZERO LINK OF NEW BLOCK
012643  1361		TAD SETUP	/GET POINTER TO NEXT FREE BLOCK
012644  3120		DCA FREE	/AND SET FREE ACCORDINGLY
012645  7240		ACM1
012646  1121		TAD FRECNT	/REDUCE COUNTER FOR FREE QUEUE
012647  3121		DCA FRECNT	/
012650  7301	FILLQ1,	AC0001		/
012651  1020		TAD X		/NOW USE X TO
012652  3731		DCA I XWRITEP	/SET NEW WRITE POINTER
012653  2661		ISZ I XCOUNT	/INCREMENT CHARACTER COUNT
012654  7421		MQL		/RETURN WITH AC=0
012655  2200	FNORML,	ISZ FILLQ	/TAKE OK RETURN
012656  7701	FERROR,	CLA MQA		/FOR ERROR, RETURN WITH CHAR IN AC
012657  6203	FRETRN,	CDF CIF
012660  5600		JMP I FILLQ	/THATS IT

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 147

012661  0000	MTQ,	0		/READ ONE CHAR FROM THE QUEUE
012662  1261		TAD MTQ		/CALL COMMON SETUP CODE
012663  4361		JMS SETUP	/
012664  3321		DCA XREADP	/
012665  1721		TAD I XREADP	/FETCH THE CURRENT CHARACTER
012666  3020		DCA X		/
012667  1420		TAD I X		/THERE IT IS
012670  7421		MQL		/STORE AWAY FOR LATER
012671  3420		DCA I X		/CLEAR BUFFER
012672  1661		TAD I XCOUNT	/CAN WE ADVANCE THE POINTER ?
012673  7650		SNA CLA		/ ?
012674  5257		 JMP FRETRN	/NO, GO BACK WITH NULL
012675  2721		ISZ I XREADP	/ADVANCE READ POINTER
012676  1721		TAD I XREADP	/SEE IF W'RE PAST THE END OF THE BLOCK
012677  0045		AND FMASK
012700  7640		SZA CLA		/PAST END OF BLOCK ?
012701  5315		 JMP MTQ1	/NO
012702  1721		TAD I XREADP	/YES, BACKUP POINTER TO BEGIN OF BLOCK
012703  1377		TAD (-BSIZE	/
012704  3020		DCA X		/
012705  1420		TAD I X		/GET ADDRESS OF NEXT BLOCK
012706  7001		IAC		/ADVANCE POINTER TO FIRST CHAR POSITION
012707  3721		DCA I XREADP	/ADDRESS OF NEW BLOCK
012710  1120		TAD FREE	/
012711  3420		DCA I X		/
012712  1020		TAD X
012713  3120		DCA FREE	/
012714  2121		ISZ FRECNT	/INCREMENT NUMBER OF FREE BLOCKS
012715  7240	MTQ1,	ACM1		/BACKUP CHARACTER COUNT
012716  1661		TAD I XCOUNT
012717  3661		DCA I XCOUNT	/
012720  5255		JMP FNORML	/AND RETURN WITH CHAR IN AC

012721  0000	GETQ,	0		/FETCH THE CURRENT CHARACTER
012722  7301		AC0001		/READP=UBUFXXX+1
012723  1721		TAD I GETQ	/GET PARAMETER
012724  2321		ISZ GETQ	/FOR NORMAL RETURN
012725  1030		TAD BASE	/
012726  4114		JMS DEFER	/GET POINTER TO CHARACTER
012727  4114		JMS DEFER	/GET THE CHARACTER
012730  5721		JMP I GETQ	/RETURN WITH CHAR IN AC

/M3.PA 17-JUN-80			  PAL8-V40A 26-JAN-86 PAGE 148

012731  0000	CLRQ,	0		/ZERO A QUEUE
012732  1331		TAD CLRQ
012733  4361		JMS SETUP	/CALL COMMON SETUP CODE
012734  3321		DCA XREADP	/
012735  1721	CLRQ1,	TAD I XREADP	/MAKE POINTER TO FIRST BLOCK IN QUEUE
012736  0377		AND (-BSIZE
012737  4114		JMS DEFER	/GET POINTER TO NEXT BLOCK
012740  7450		SNA		/NIL, THEN THIS IS A ONE-BLOCK QUEUE
012741  5351		 JMP CLRQ2	/YES, DON'T DEALLOCATE THE LAST BLOCK
012742  3721		DCA I XREADP	/STORE POINTER TO NEXT BLOCK
012743  1120		TAD FREE	/
012744  3420		DCA I X		/LINK OLD BLOCK TO FREE
012745  1020		TAD X		/
012746  3120		DCA FREE	/AND SET SET FREE TO THIS ONE
012747  2121		ISZ FRECNT	/RETURN 1 BLOCK TO FREE QUEUE
012750  5335		JMP CLRQ1	/GO ON FOR MORE BLOCKS
012751  2020	CLRQ2,	ISZ X		/SET READP TO FIRST CHARACTER POSITION
012752  1020		TAD X		/POINTER TO FIRST BLOCK
012753  3721		DCA I XREADP	/NEW READP
012754  2321		ISZ XREADP	/ADVANCE TO WRITEP
012755  1020		TAD X		/
012756  3721		DCA I XREADP	/SET WRITEP=READP
012757  3661		DCA I XCOUNT	/SET COUNT=0
012760  5257		JMP FRETRN	/RETURN

012761  0000	SETUP,	0		/SETUP POINTERS FOR QUEUE ROUTINES
012762  3200		DCA FILLQ	/ALL RETURNS THROUGH FILLQ
012763  1436		TAD I ZMYCDIF	/GET RETURN CIF CDF
012764  3257		DCA FRETRN	/PREPARE RETURN TO USER FIELD
012765  1600		TAD I FILLQ	/GET PARAMETER
012766  2200		ISZ FILLQ	/
012767  1776		TAD I (BASE	/ADD HIS (!) BASE
012770  6211		CDF 10		/SELECT THE FIELD OF BUFFERS
012771  3261		DCA XCOUNT	/POINTER TO COUNT
012772  1261		TAD XCOUNT	/
012773  7001		IAC		/POINTER TO READP IN AC
012774  5761		JMP I SETUP

012776  0030
012777  7760
	3000	PAGE			/END IFNZRO BGMAX >


/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 149

		/M4.PA 9-JUN-80
		/**UASEM VERSION**
		/****************************************************
		/*********   D A T A   S T R U C T U R E S   ********
		/****************************************************

	3000		DOTF10=.
	0000		FIELD 0
	3200		*DOTF00

		/THE DISK QUEUE, MUST START AT PAGE BOUND:
003200  0000	SYSQ,	ZBLOCK SYSMAX^2
		IFNZRO SYSQ&177 <SYQERR,XERROR>


		IFDEF TAPE <	/TABLE WHICH HOLDS CURRENT TAPE POSITION
003220  0000	TAPETB,	ZBLOCK TAPE	/FOR EACH UNIT NUMBER >

		IFDEF COMLNG <
		COMMON,	ZBLOCK COMLNG	/BLOCK OF LOCATIONS,
					/DIFFERENT FOR ANY INSTALLATION >

003222  0000	HRDLST,	ZBLOCK 1^2		/EVENT 0 FOR BREAK CHARACTER DETECTION
003224  0000		ZBLOCK INTDEV-1^2	/CONNECTABLE SKIPCHAIN ENTRIES
003232  0000		ZBLOCK SKPDEV-INTDEV^2	/NON-CONNECTABLE SKIPCHAIN ENTRIES
			ZBLOCK MAXDEV-SKPDEV^2	/ENTRIES EG. FOR TERMINAL MUX.
003240  0000		ZBLOCK SOFSLOT^2	/ALLOCATABLE SOFTWARE EVENTS
		IFNZRO BGMAX <
003310  0000		ZBLOCK 1^2		/ONE SLOT FOR THE BG SCHEDULER
003312  0000		ZBLOCK BGMAX^2		/ONE SLOT FOR EACH BG
	0033		BSSLOT=MAXSLOT		/ >

003320  0000	CLRTAB,	ZBLOCK INTDEV-1		/HOLDS CLEAR-IOT'S

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 150

		/THE COREMAP CONTAINS ONE WORD FOR EVERY MEMORY PAGE IN THE
		/FOREGROUND. THE FOLLOWING ENCODING APPLIES:
		/0	FREE PAGE
		/-3	OCCUPIED BY RESIDENT CODE OR OTHERWISE UNUSABLE
		/-2	ALLOCATED BUFFER PAGE, BUT NOT LAST PAGE OF BUFFER
		/-1	LAST PAGE OF ALLOCATED BUFFER
		/NEG.	TCBP OF EXTERNAL TASK LOADED HERE
		/POS.	-TCBP OF EXTERNAL TASK THAT HAS 'RELEASED' ITS MEMORY
		/THE PROPER CONTENTS OF THIS MAP IS ONLY KNOWN DURING PASS 2.
		/SO DURING PASS 1 WE JUST RESERVE THE REQUIRED AMOUNT OF MEMORY

		IFNZRO PASS1 <
		CORMAP,	*FIELDS^40+.	/ >
		IFZERO PASS1 <
		/FIRST MAKE SURE THAT ALL ENFXX'S ARE AT A PAGE BOUND:
	4600	ENDF00=ENDF00+177&7600
	4200	ENDF10=ENDF10+177&7600
	0200	ENDF20=ENDF20+177&7600
	0200	ENDF30=ENDF30+177&7600
	0200	ENDF40=ENDF40+177&7600
	0200	ENDF50=ENDF50+177&7600
	0200	ENDF60=ENDF60+177&7600
	0200	ENDF70=ENDF70+177&7600
		/THE MONITOR AREA IN FIELD 0:
003323  7775	IFNZRO ENDF00&200 <-3>
003324  7775	IFNZRO ENDF00&400 <-3;-3>
003325  7775
		IFNZRO ENDF00&1000 <-3;-3;-3;-3>
		IFNZRO ENDF00&2000 <-3;-3;-3;-3;-3;-3;-3;-3>
003326  7775	IFNZRO ENDF00&4000 <-3;-3;-3;-3;-3;-3;-3;-3
003327  7775
003330  7775
003331  7775
003332  7775
003333  7775
003334  7775
003335  7775
003336  7775			    -3;-3;-3;-3;-3;-3;-3;-3>
003337  7775
003340  7775
003341  7775
003342  7775
003343  7775
003344  7775
003345  7775
		/THE EMPTY AREA IN FIELD 0:
003346  0000		ZBLOCK CORMAP+37-.
		/DON'T TOUCH THE LAST PAGE (OS8):
003362  7775		-3
		/NOW FOR FIELD 1:
		IFZERO FIELDS-2&4000 <
003363  7775	IFNZRO ENDF10&200 <-3>
		IFNZRO ENDF10&400 <-3;-3>
		IFNZRO ENDF10&1000 <-3;-3;-3;-3>
		IFNZRO ENDF10&2000 <-3;-3;-3;-3;-3;-3;-3;-3>

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 150-1

003364  7775	IFNZRO ENDF10&4000 <-3;-3;-3;-3;-3;-3;-3;-3
003365  7775
003366  7775
003367  7775
003370  7775
003371  7775
003372  7775
003373  7775
003374  7775			    -3;-3;-3;-3;-3;-3;-3;-3>
003375  7775
003376  7775
003377  7775
003400  7775
003401  7775
003402  7775
003403  7775
		/FREE AREA IN FIELD 1:
003404  0000		ZBLOCK CORMAP+77-.
003422  7775		-3		/LAST PAGE IS FOR OS/8
		/NOW FOR FIELD 2:
		IFZERO FIELDS-3&4000 <
003423  7775	IFNZRO ENDF20&200 <-3>
		IFNZRO ENDF20&400 <-3;-3>
		IFNZRO ENDF20&1000 <-3;-3;-3;-3>
		IFNZRO ENDF20&2000 <-3;-3;-3;-3;-3;-3;-3;-3>
		IFNZRO ENDF20&4000 <-3;-3;-3;-3;-3;-3;-3;-3
				    -3;-3;-3;-3;-3;-3;-3;-3>
003424  0000		ZBLOCK CORMAP+140-.
		IFDEF SYRL01 <*.-1;-3	/RETAIN SYSTEM HANDLER FOR RL01 >
		IFDEF SYRX02 <*.-1;-3	/RETAIN SYSTEM HANDLER FOR RX02 >
		/NOW FOR FIELD 3:
		IFZERO FIELDS-4&4000 <
		IFNZRO ENDF30&200 <-3>
		IFNZRO ENDF30&400 <-3;-3>
		IFNZRO ENDF30&1000 <-3;-3;-3;-3>
		IFNZRO ENDF30&2000 <-3;-3;-3;-3;-3;-3;-3;-3>
		IFNZRO ENDF30&4000 <-3;-3;-3;-3;-3;-3;-3;-3
				    -3;-3;-3;-3;-3;-3;-3;-3>
			ZBLOCK CORMAP+200-.
		/NOW FOR FIELD 4:
		IFZERO FIELDS-5&4000 <
		IFNZRO ENDF40&200 <-3>
		IFNZRO ENDF40&400 <-3;-3>
		IFNZRO ENDF40&1000 <-3;-3;-3;-3>
		IFNZRO ENDF40&2000 <-3;-3;-3;-3;-3;-3;-3;-3>
		IFNZRO ENDF40&4000 <-3;-3;-3;-3;-3;-3;-3;-3
				    -3;-3;-3;-3;-3;-3;-3;-3>
			ZBLOCK CORMAP+240-.
		/NOW FOR FIELD 5:
		IFZERO FIELDS-6&4000 <
		IFNZRO ENDF50&200 <-3>
		IFNZRO ENDF50&400 <-3;-3>
		IFNZRO ENDF50&1000 <-3;-3;-3;-3>
		IFNZRO ENDF50&2000 <-3;-3;-3;-3;-3;-3;-3;-3>
		IFNZRO ENDF50&4000 <-3;-3;-3;-3;-3;-3;-3;-3

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 150-2

				    -3;-3;-3;-3;-3;-3;-3;-3>
			ZBLOCK CORMAP+300-.
		/NOW FOR FIELD 6:
		IFZERO FIELDS-7&4000 <
		IFNZRO ENDF60&200 <-3>
		IFNZRO ENDF60&400 <-3;-3>
		IFNZRO ENDF60&1000 <-3;-3;-3;-3>
		IFNZRO ENDF60&2000 <-3;-3;-3;-3;-3;-3;-3;-3>
		IFNZRO ENDF60&4000 <-3;-3;-3;-3;-3;-3;-3;-3
				    -3;-3;-3;-3;-3;-3;-3;-3>
			ZBLOCK CORMAP+340-.
		/NOE FOR FIELD 7:
		IFZERO FIELDS-10&4000 <
		IFNZRO ENDF70&200 <-3>
		IFNZRO ENDF70&400 <-3;-3>
		IFNZRO ENDF70&1000 <-3;-3;-3;-3>
		IFNZRO ENDF70&2000 <-3;-3;-3;-3;-3;-3;-3;-3>
		IFNZRO ENDF70&4000 <-3;-3;-3;-3;-3;-3;-3;-3
				    -3;-3;-3;-3;-3;-3;-3;-3>
			ZBLOCK CORMAP+400-.	/ >>>>>>>
						/END OF PASS2 CONDITION >
		/NOW COMES THE END OF THE MAP. FOR PROPPER OPERATION OF
		/THE ROUTINE HOLE, THE MAP SHOULD END IN -3;0:
003463  7775		-3
003464  0000	MAPEND,	0

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 151

003465  0000	NAMLST,	ZBLOCK MAXNAM+17
003554  0000	LASTNM,	0			/ONE LOC EXTRA FOR SEARCH LOOP

	4000	IFZERO .&4000 <*4000	/TCBP'S MUST ALWAYS BE NEGATIVE >

		TCBTAB,			/THE TABLE OF TASK CONTROL BLOCKS

004000  2711		"T^100+"I&3777;1;DGNTIM;0
004001  0001
004002  3112
004003  0000
004004  0000		0;CDF+00%2;0;0
004005  3100
004006  0000
004007  0000

004010  2631		"S^100+"Y&3777;0;SY;0
004011  0000
004012  2600
004013  0000
004014  0000		0;CDF+00%2;0;0
004015  3100
004016  0000
004017  0000

		IFDEF SYRX02 <
			"S^100+"Z&3777;0;SZ;0
			0;CDF+00%2;0;0		/ >

		IFDEF SYRL01 <			/FAKE SY FOR RLC
			"S^100+"C&3777;0;SC;0
			0;CDF+00%2;0;0		/ >

		IFDEF DKUSED <
004020  0713		"D^100+"K&3777;0;DK;0
004021  0000
004022  2463
004023  0000
004024  0010		10;CDF 00%2;0;0	/ >
004025  3100
004026  0000
004027  0000

	0000	IFNDEF KL8XX <TT1LST=0;KK1LST=0>
	0000
004030  2661		"T^100+"1&3777;0;TT;TT1LST
004031  0000
004032  0200
004033  0000
004034  0010	T1TCBP,	10;CDF 00%2;0;0
004035  3100
004036  0000
004037  0000

004040  1561		"K^100+"1&3777;0;KK;KK1LST

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 151-1

004041  0000
004042  0315
004043  0000
004044  0010	K1TCBP,	10;CDF+00%2;0;0
004045  3100
004046  0000
004047  0000

		IFDEF KL8E2 <
			"T^100+"2&3777;0;TT;TT2LST;10;CDF 00%2;0;0

			"K^100+"2&3777;0;KK;KK2LST;10;CDF 00%2;0;0	/ >

		IFDEF KL8E3 <
			"T^100+"3&3777;0;TT;TT3LST;10;CDF 00%2;0;0

			"K^100+"3&3777;0;KK;KK3LST;10;CDF 00%2;0;0	/ >

		IFDEF KL8E4 <
			"T^100+"4&3777;0;TT;TT4LST;10;CDF 00%2;0;0

			"K^100+"4&3777;0;KK;KK4LST;10;CDF 00%2;0;0	/ >

		IFDEF KL8E5 <
			"T^100+"5&3777;0;TT;TT5LST;10;CDF 00%2;0;0

			"K^100+"5&3777;0;KK;KK5LST;10;CDF 00%2;0;0	/ >

		IFDEF KL8E6 <
			"T^100+"6&3777;0;TT;TT6LST;10;CDF 00%2;0;0

			"K^100+"6&3777;0;KK;KK6LST;10;CDF 00%2;0;0	/ >

		IFDEF KL8E7 <
			"T^100+"7&3777;0;TT;TT7LST;10;CDF 00%2;0;0

			"K^100+"7&3777;0;KK;KK7LST;10;CDF 00%2;0;0	/ >
		IFDEF KL8A1 <
			"T-"K^100+KL8NAM+0;0;TT;TY0LST;10;CDF%2;0;0
			KL8NAM+0;0;KK;KB0LST;10;CDF%2;0;0
			"T-"K^100+KL8NAM+1;0;TT;TY1LST;10;CDF%2;0;0
			KL8NAM+0;0;KK;KB1LST;10;CDF%2;0;0
			"T-"K^100+KL8NAM+2;0;TT;TY2LST;10;CDF%2;0;0
			KL8NAM+0;0;KK;KB2LST;10;CDF%2;0;0
			"T-"K^100+KL8NAM+3;0;TT;TY3LST;10;CDF%2;0;0
			KL8NAM+0;0;KK;KB3LST;10;CDF%2;0;0
		/END IFDEF KL8A1 >

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 152

		IFNZRO BGMAX <
004050  1361	KHIBG1,	"I^100+"1&3777;1;KHIST	;BG1;10;CDF 00%2;0;0
004051  0001
004052  2026
004053  3707
004054  0010
004055  3100
004056  0000
004057  0000
004060  2161	KHOBG1,	"O^100+"1&3777;0;KHO	;BG1;10;CDF 00%2;0;0
004061  0000
004062  2403
004063  3707
004064  0010
004065  3100
004066  0000
004067  0000
004070  0761	EMBG1,	"E^100+"1&3777;1;EMSTRT	;BG1;10;CDF 00%2;0;0
004071  0001
004072  1476
004073  3707
004074  0010
004075  3100
004076  0000
004077  0000

		IFZERO BGMAX-2&4000 <
004100  1362	KHIBG2,	"I^100+"2&3777;1;KHIST	;BG2;10;CDF 00%2;0;0
004101  0001
004102  2026
004103  3775
004104  0010
004105  3100
004106  0000
004107  0000
004110  2162	KHOBG2,	"O^100+"2&3777;0;KHO	;BG2;10;CDF 00%2;0;0
004111  0000
004112  2403
004113  3775
004114  0010
004115  3100
004116  0000
004117  0000
004120  0762	EMBG2,	"E^100+"2&3777;1;EMSTRT	;BG2;10;CDF 00%2;0;0
004121  0001
004122  1476
004123  3775
004124  0010
004125  3100
004126  0000
004127  0000

		IFZERO BGMAX-3&4000 <
004130  1363	KHIBG3,	"I^100+"3&3777;1;KHIST	;BG3;10;CDF 00%2;0;0
004131  0001

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 152-1

004132  2026
004133  4063
004134  0010
004135  3100
004136  0000
004137  0000
004140  2163	KHOBG3,	"O^100+"3&3777;0;KHO	;BG3;10;CDF 00%2;0;0
004141  0000
004142  2403
004143  4063
004144  0010
004145  3100
004146  0000
004147  0000
004150  0763	EMBG3,	"E^100+"3&3777;1;EMSTRT	;BG3;10;CDF 00%2;0;0
004151  0001
004152  1476
004153  4063
004154  0010
004155  3100
004156  0000
004157  0000

		IFZERO BGMAX-4&4000 <
		KHIBG4,	"I^100+"4&3777;1;KHIST	;BG4;10;CDF 00%2;0;0
		KHOBG4,	"O^100+"4&3777;0;KHO	;BG4;10;CDF 00%2;0;0
		EMBG4,	"E^100+"4&3777;1;EMSTRT	;BG4;10;CDF 00%2;0;0

		IFZERO BGMAX-5&4000 <
		KHIBG5,	"I^100+"5&3777;1;KHIST	;BG5;10;CDF 00%2;0;0
		KHOBG5,	"O^100+"5&3777;0;KHO	;BG5;10;CDF 00%2;0;0
		EMBG5,	"E^100+"5&3777;1;EMSTRT	;BG5;10;CDF 00%2;0;0

		IFZERO BGMAX-6&4000 <
		KHIBG6,	"I^100+"6&3777;1;KHIST	;BG6;10;CDF 00%2;0;0
		KHOBG6,	"O^100+"6&3777;0;KHO	;BG6;10;CDF 00%2;0;0
		EMBG6,	"E^100+"6&3777;1;EMSTRT	;BG6;10;CDF 00%2;0;0

		IFZERO BGMAX-7&4000 <
		KHIBG7,	"I^100+"7&3777;1;KHIST	;BG7;10;CDF 00%2;0;0
		KHOBG7,	"O^100+"7&3777;0;KHO	;BG7;10;CDF 00%2;0;0
		EMBG7,	"E^100+"7&3777;1;EMSTRT	;BG7;10;CDF 00%2;0;0 >>>>>>>

004160  0000	LOADPT,	0		/ZERO IS TERMINATOR

		IFNZRO MAXNAM^10+TCBTAB-.&4000 <TCBOVF,XERROR> /TO MANY TASKS !

004161  0000		ZBLOCK MAXNAM^10+TCBTAB-. /THE REST OF TCBTAB IS
						  /FOR DISK-RESIDENT TASKS
004500  0000		ZBLOCK .+200&7600-.&7770  /USE THE REST OF THIS PAGE TOO !
	4600		*.

		IFNZRO PASS1 <ENDF00=.-1>
		IFZERO ENDF00+200&4000 <F00ERR,XERROR /CORE OVERFLOW >

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 153

		/**********************************************************
		/**********  D A T A   A R E A    F I E L D   1  **********
		/**********************************************************

	0001		FIELD 1
	3000		*DOTF10
		IFNZRO BGMAX <
		/THE TERMINAL BUFFERS AND THE TERMINAL BUFFER POOL
	7760		O=-BSIZE
	3000		*.+BSIZE-1&O	/BUFFERS START AT 'NICE' ADDRESS
		IFZERO BGMAX-1&4000 <
013000  0000	BG1IN,	0;"R;215;ZBLOCK BSIZE-3	/FIRST BLOCK OF INPUT BUFFER
013001  0322
013002  0215
013003  0000
013020  0000	BG1OUT,	ZBLOCK BSIZE	/FIRST BLOCK OF OUTPUT BUFFER >
		IFZERO BGMAX-2&4000 <
013040  0000	BG2IN,	0;"R;215;ZBLOCK BSIZE-3	/FIRST BLOCK OF INPUT BUFFER
013041  0322
013042  0215
013043  0000
013060  0000	BG2OUT,	ZBLOCK BSIZE	/FIRST BLOCK OF OUTPUT BUFFER >
		IFZERO BGMAX-3&4000 <
013100  0000	BG3IN,	0;"R;215;ZBLOCK BSIZE-3	/FIRST BLOCK OF INPUT BUFFER
013101  0322
013102  0215
013103  0000
013120  0000	BG3OUT,	ZBLOCK BSIZE	/FIRST BLOCK OF OUTPUT BUFFER >
		IFZERO BGMAX-4&4000 <
		BG4IN,	0;"R;215;ZBLOCK BSIZE-3	/FIRST BLOCK OF INPUT BUFFER
		BG4OUT,	ZBLOCK BSIZE	/FIRST BLOCK OF OUTPUT BUFFER >
		IFZERO BGMAX-5&4000 <
		BG5IN,	0;"R;215;ZBLOCK BSIZE-3	/FIRST BLOCK OF INPUT BUFFER
		BG5OUT,	ZBLOCK BSIZE	/FIRST BLOCK OF OUTPUT BUFFER >
		IFZERO BGMAX-6&4000 <
		BG6IN,	0;"R;215;ZBLOCK BSIZE-3	/FIRST BLOCK OF INPUT BUFFER
		BG6OUT,	ZBLOCK BSIZE	/FIRST BLOCK OF OUTPUT BUFFER >
		IFZERO BGMAX-7&4000 <
		BG7IN,	0;"R;215;ZBLOCK BSIZE-3	/FIRST BLOCK OF INPUT BUFFER
		BG7OUT,	ZBLOCK BSIZE	/FIRST BLOCK OF OUTPUT BUFFER >

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 154

013140  0000		ZBLOCK BSIZE	/LAST BLOCK IN THE POOL
		IFNZRO POOLN-1&1 <
013160  3140		.-BSIZE;ZBLOCK BSIZE-1 >
013161  0000
		IFNZRO POOLN-1&2 <
013200  3160		.-BSIZE;ZBLOCK BSIZE-1
013201  0000
013220  3200		.-BSIZE;ZBLOCK BSIZE-1 >
013221  0000
		IFNZRO POOLN-1&4 <
013240  3220		.-BSIZE;ZBLOCK BSIZE-1
013241  0000
013260  3240		.-BSIZE;ZBLOCK BSIZE-1
013261  0000
013300  3260		.-BSIZE;ZBLOCK BSIZE-1
013301  0000
013320  3300		.-BSIZE;ZBLOCK BSIZE-1 >
013321  0000
		IFNZRO POOLN-1&10 <
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1 >
		IFNZRO POOLN-1&20 <
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1 >

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 155

		IFNZRO POOLN-1&40 <
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1
			.-BSIZE;ZBLOCK BSIZE-1 >
013340  3320	FQLAST,	.-BSIZE;ZBLOCK BSIZE-1 /LAST BLOCK OF FREE QUEUE
013341  0000

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 156

013360  3416	FRESLT,	FBLKO			/POINTER TO FREE SLOT IN SWPTAB
013361  0000	BSTAB,	0			/STARTBLOCK OF SWPFIL.M8
		IFZERO BGMAX-1&4000 <
	0001		BGID=BG1-BGDATA+1
013362  0001		0000+BGID		/BG1, FIELD 0
		IFNDEF SINGL8 <
013363  0000		ZBLOCK	BGFLDS-1	/REAL MEMORY INITIALLY EMPTY >
013367  1001		1000+BGID		/BG1, FIELD 1
		IFZERO BGCORE-3&4000 <
013370  2001		2000+BGID		/BG1, FIELD 2 >
		IFZERO BGCORE-4&4000 <
013371  3001		3000+BGID		/BG1, FIELD 3 >
		IFZERO BGCORE-5&4000 <
013372  4001		4000+BGID		/BG1, FIELD 4 >
		IFZERO BGCORE-6&4000 <
013373  5001		5000+BGID		/BG1, FIELD 5 >
		IFZERO BGCORE-7&4000 <
013374  6001		6000+BGID		/BG1, FIELD 6 >
		IFZERO BGCORE-10&4000 <
013375  7001		7000+BGID		/BG1, FIELD 7 >>
		IFZERO BGMAX-2&4000 <
	0067		BGID=BG2-BGDATA+1
013376  0067		0000+BGID		/BG2, FIELD 0
013377  1067		1000+BGID		/BG2, FIELD 1
		IFZERO BGCORE-3&4000 <
013400  2067		2000+BGID		/BG2, FIELD 2 >
		IFZERO BGCORE-4&4000 <
013401  3067		3000+BGID		/BG2, FIELD 3 >
		IFZERO BGCORE-5&4000 <
013402  4067		4000+BGID		/BG2, FIELD 4 >
		IFZERO BGCORE-6&4000 <
013403  5067		5000+BGID		/BG2, FIELD 5 >
		IFZERO BGCORE-7&4000 <
013404  6067		6000+BGID		/BG2, FIELD 6 >
		IFZERO BGCORE-10&4000 <
013405  7067		7000+BGID		/BG2, FIELD 7 >>
		IFZERO BGMAX-3&4000 <
	0155		BGID=BG3-BGDATA+1
013406  0155		0000+BGID		/BG3, FIELD 0
013407  1155		1000+BGID		/BG3, FIELD 1
		IFZERO BGCORE-3&4000 <
013410  2155		2000+BGID		/BG3, FIELD 2 >
		IFZERO BGCORE-4&4000 <
013411  3155		3000+BGID		/BG3, FIELD 3 >
		IFZERO BGCORE-5&4000 <
013412  4155		4000+BGID		/BG3, FIELD 4 >
		IFZERO BGCORE-6&4000 <
013413  5155		5000+BGID		/BG3, FIELD 5 >
		IFZERO BGCORE-7&4000 <
013414  6155		6000+BGID		/BG3, FIELD 6 >
		IFZERO BGCORE-10&4000 <
013415  7155		7000+BGID		/BG3, FIELD 7 >>
		IFZERO BGMAX-4&4000 <
			BGID=BG4-BGDATA+1
			0000+BGID		/BG4, FIELD 0

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 156-1

			1000+BGID		/BG4, FIELD 1
		IFZERO BGCORE-3&4000 <
			2000+BGID		/BG4, FIELD 2 >
		IFZERO BGCORE-4&4000 <
			3000+BGID		/BG4, FIELD 3 >
		IFZERO BGCORE-5&4000 <
			4000+BGID		/BG4, FIELD 4 >
		IFZERO BGCORE-6&4000 <
			5000+BGID		/BG4, FIELD 5 >
		IFZERO BGCORE-7&4000 <
			6000+BGID		/BG4, FIELD 6 >
		IFZERO BGCORE-10&4000 <
			7000+BGID		/BG4, FIELD 7 >>
		IFZERO BGMAX-5&4000 <
			BGID=BG5-BGDATA+1
			0000+BGID		/BG5, FIELD 0
			1000+BGID		/BG5, FIELD 1
		IFZERO BGCORE-3&4000 <
			2000+BGID		/BG5, FIELD 2 >
		IFZERO BGCORE-4&4000 <
			3000+BGID		/BG5, FIELD 3 >
		IFZERO BGCORE-5&4000 <
			4000+BGID		/BG5, FIELD 4 >
		IFZERO BGCORE-6&4000 <
			5000+BGID		/BG5, FIELD 5 >
		IFZERO BGCORE-7&4000 <
			6000+BGID		/BG5, FIELD 6 >
		IFZERO BGCORE-10&4000 <
			7000+BGID		/BG5, FIELD 7 >>
		IFZERO BGMAX-6&4000 <
			BGID=BG6-BGDATA+1
			0000+BGID		/BG6, FIELD 0
			1000+BGID		/BG6, FIELD 1
		IFZERO BGCORE-3&4000 <
			2000+BGID		/BG6, FIELD 2 >
		IFZERO BGCORE-4&4000 <
			3000+BGID		/BG6, FIELD 3 >
		IFZERO BGCORE-5&4000 <
			4000+BGID		/BG6, FIELD 4 >
		IFZERO BGCORE-6&4000 <
			5000+BGID		/BG6, FIELD 5 >
		IFZERO BGCORE-7&4000 <
			6000+BGID		/BG6, FIELD 6 >
		IFZERO BGCORE-10&4000 <
			7000+BGID		/BG6, FIELD 7 >>
		IFZERO BGMAX-7&4000 <
			BGID=BG7-BGDATA+1
			0000+BGID		/BG7, FIELD 0
			1000+BGID		/BG7, FIELD 1
		IFZERO BGCORE-3&4000 <
			2000+BGID		/BG7, FIELD 2 >
		IFZERO BGCORE-4&4000 <
			3000+BGID		/BG7, FIELD 3 >
		IFZERO BGCORE-5&4000 <
			4000+BGID		/BG7, FIELD 4 >

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 156-2

		IFZERO BGCORE-6&4000 <
			5000+BGID		/BG7, FIELD 5 >
		IFZERO BGCORE-7&4000 <
			6000+BGID		/BG7, FIELD 6 >
		IFZERO BGCORE-10&4000 <
			7000+BGID		/BG7, FIELD 7 >>
013416  0000	FBLKO,	0			/ONE EMPTY SLOT IN SWPFIL
	3367	SWPTAB=BSTAB+1+BGFLDS		/THESE 3 LISTS MUST BE TOGETHER!!!  >

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 157

		IFDEF KL8XX <	/LIST FOR THE REENTRANT TTY DRIVERS
		IFNDEF KL8A1 <O=2>
		IFDEF KL8A1  <O=3>
		TT1LST,	0		/TTCHAR
			TTY1		/TTEVNT
			0		/TTRET
			TLS		/TTTLS
			ZBLOCK O	/TTSAV,(TTLINE),TTCOUNT
			-T1CHAR		/TTFCHR
			-T1FILL		/TTFILL
			0		/TTTMP
			T1BACK-210	/TTBACK MUST BE IN THIS ORDER!!
		KK1LST,	KB1
			-T1ESCP
		IFDEF KL8E2 <
		TT2LST,	0
			TTY2
			0
			6016+KL8E2
			ZBLOCK O
			-T2CHAR
			-T2FILL
			0
			T2BACK-210
		KK2LST,	KB2
			-T2ESCP	/ >
		IFDEF KL8E3<
		TT3LST,	0
			TTY3
			0
			6016+KL8E3
			ZBLOCK O
			-T3CHAR
			-T3FILL
			0
			T3BACK-210
		KK3LST,	KB3
			-T3ESCP	/ >
		IFDEF KL8E4 <
		TT4LST,	0
			TTY4
			0
			6016+KL8E4
			ZBLOCK O
			-T4CHAR
			-T4FILL
			0
			T4BACK-210
		KK4LST,	KB4
			-T4ESCP	/ >
		IFDEF KL8E5 <
		TT5LST,	0
			TTY5
			0
			6016+KL8E5

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 157-1

			ZBLOCK O
			-T5CHAR
			-T5FILL
			0
			T5BACK-210
		KK5LST,	KB5
			-T5ESCP	/ >
		IFDEF KL8E6<
		TT6LST,	0
			TTY6
			0
			6016+KL8E6
			ZBLOCK O
			-T6CHAR
			-T6FILL
			0
			T6BACK-210
		KK6LST,	KB6
			-T6ESCP	/ >
		IFDEF KL8E7 <
		TT7LST,	0
			TTY7
			0
			6016+KL8E7
			ZBLOCK O
			-T7CHAR
			-T7FILL
			0
			T7BACK-210
		KK7LST,	KB7
			-T7ESCP	/ >
		IFDEF KL8A1 <
		TY0LST,	0
			MUX1TT
			0
			KL8A1+6004
			0
			400^0
			0
			-C0CHAR
			-C0FILL
			0
			C0BACK-210
		KB0LST,	MUX1KB
			-C0ESCP
		TY1LST,	0
			MUX1TT+1
			0
			KL8A1+6004
			0
			400^1
			0
			-C1CHAR
			-C1FILL
			0

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 157-2

			C1BACK-210
		KB1LST,	MUX1KB+1
			-C1ESCP
		TY2LST,	0
			MUX1TT+2
			0
			KL8A1+6004
			0
			400^2
			0
			-C2CHAR
			-C2FILL
			0
			C2BACK-210
		KB2LST,	MUX1KB+2
			-C2ESCP
		TY3LST,	0
			MUX1TT+3
			0
			KL8A1+6004
			0
			400^3
			0
			-C3CHAR
			-C3FILL
			0
			C3BACK-210
		KB3LST,	MUX1KB+3
			-C3ESCP
					/END IFDEF KL8A1 >
					/END IFDEF KL8XX >

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 158

		IFNZRO BGMAX <
		/DISPATCH TABLE FOR FAKEHANDLER:
013417  6263	HNDTAB,	-EMCHNL+EMDOT	/0 EMULATOR FOR CHANNEL 0-3
	0010		SYSCHN=.-HNDTAB^10
013420  0723		"D^100+"S&3777	/1  FOR SYSTEM-DISK PUBLIC DEVICES
		IFDEF DSK <
			DSKCHN=.-HNDTAB^10
			"D^100+"N&3777	/T  FOR NON-SYSTEM DISK PUBLIC DEVICES >
		IFDEF TAPE <
	0020		DTACHN=.-HNDTAB^10
013421  2705		"T^100+"E&3777	/U  FOR DTA0:-DTA7: (TUA0:-TUA7:) >
		IFDEF LPT <
	0030		LPTCHN=.-HNDTAB^10
013422  1705		"L^100+"E&3777	/V  FOR LPT: >
		IFDEF RXA <
			RXACHN=.-HNDTAB^10
			"F^100+"E&3777	/W  FOR RXA0:-RXA7: >
		IFDEF SYRL01 <RL01DS=1 >
		IFDEF NSRL01 <RL01DS=1>
		IFDEF RL01DS <
			RLCCHN=.-HNDTAB^10
			"D^100+"C&3777	/X  FOR RLC DEVICES >
		IFDEF CRD <
			CRDCHN=.-HNDTAB^10
			"K^100+"E&3777	/Y  FOR CDR: >
013423  7604	IFZERO HNDTAB+07-.&4000 <	-EMERROR+EMDOT	/ RESERVED >
013424  7604	IFZERO HNDTAB+07-.&4000 <	-EMERROR+EMDOT	/ RESERVED >
013425  7604	IFZERO HNDTAB+07-.&4000 <	-EMERROR+EMDOT	/ RESERVED >
013426  7604	IFZERO HNDTAB+07-.&4000 <	-EMERROR+EMDOT	/ RESERVED >
		IFZERO HNDTAB+07-.&4000 <	-EMERROR+EMDOT	/ RESERVED >
		IFZERO HNDTAB+07-.&4000 <	-EMERROR+EMDOT	/ RESERVED >
		IFNZRO HNDTAB+10-.&4000 <CHNOVR,__		/ >

		/TABLE OF EXECUTABLE IOT'S	/0=NOT EXECUTABLE
		/.GT.0="N^100+"A&3777 TASK'S NAME /.LT.0= RELATIVE DISTANCE TO SERVICE CODE
013427  7775	EMTAB,	-EM00+EMDOT	/600X
013430  0000		ZBLOCK EMTAB+3-.
013432  7773		-EM03+EMDOT	/603X
013433  7773		-EM03+EMDOT	/604X
013434  0000		ZBLOCK EMTAB+20-.
013447  7771		-EM20+EMDOT	/620X
013450  7771		-EM20+EMDOT	/621X
013451  7771		-EM20+EMDOT	/622X
013452  7771		-EM20+EMDOT	/623X
013453  7771		-EM20+EMDOT	/624X
013454  7771		-EM20+EMDOT	/625X
013455  7771		-EM20+EMDOT	/626X
013456  7771		-EM20+EMDOT	/627X 
		IFDEF FPP <
			ZBLOCK EMTAB+55-.
			-EM55+EMDOT	/655X
			-EM55+EMDOT	/656X >
013457  0000		ZBLOCK EMTAB+77-.
013526  7765		-EMGIGA+EMDOT	/GIANT IOT =6770

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 159

		/
		/TABLE FOR GROUP 6200-6277 IOT'S WHICH NEED SPECIAL DECODING
		/
013527  7575	EM20TB,	-EMXNOP+EMDOT		/6200 LXM OF KT8A
013530  7704		-EMCDIF+EMDOT		/6201 CDF 0
013531  7704		-EMCDIF+EMDOT		/6202 CIF 0
013532  7704		-EMCDIF+EMDOT		/6203 CDI 0
013533  7604		-EMERROR+EMDOT		/6204 CINT: ????
013534  7575		-EMXNOP+EMDOT		/6205 CDF 100 OR DM8E: RTM
013535  7604		-EMERROR+EMDOT		/6206 CIF 100
013536  7604		-EMERROR+EMDOT		/6207 CDI 100
013537  7604		-EMERROR+EMDOT		/6210 GTS OF KT8A
013540  7704		-EMCDIF+EMDOT		/6211 CDF 10
013541  7704		-EMCDIF+EMDOT		/6212 CIF 10
013542  7704		-EMCDIF+EMDOT		/6213 CDI 10
013543  7604		-EMERROR+EMDOT		/6214 RDF (SHOULD UNTRAP)
013544  7575		-EMXNOP+EMDOT		/6215 CDF 110 OR DM8E: SKME
013545  7604		-EMERROR+EMDOT		/6216 CIF 110
013546  7604		-EMERROR+EMDOT		/6217 CDI 110
013547  7604		-EMERROR+EMDOT		/6220 RTS OF KT8A
		IFZERO BGCORE-3&4000 <
013550  7704		-EMCDIF+EMDOT		/6221 CDF 20
013551  7704		-EMCDIF+EMDOT		/6222 CIF 20
013552  7704		-EMCDIF+EMDOT		/6223 CDI 20 >
		IFNZRO BGCORE-3&4000 <
			-EMXNOP+EMDOT		/
			-EMERROR+EMDOT		/
			-EMERROR+EMDOT		/ >
013553  7604		-EMERROR+EMDOT		/6224 RIF (SHOULD UNTRAP)
013554  7575		-EMXNOP+EMDOT		/6225 CDF 120 OR DM8E: SKMM
013555  7604		-EMERROR+EMDOT		/6226 CIF 120
013556  7604		-EMERROR+EMDOT		/6227 CDI 120
013557  7575		-EMXNOP+EMDOT		/6230 RXM OF KT8A (NOP FOR ODT)
		IFZERO BGCORE-4&4000 <
013560  7704		-EMCDIF+EMDOT		/6231 CDF 30
013561  7704		-EMCDIF+EMDOT		/6232 CIF 30
013562  7704		-EMCDIF+EMDOT		/6233 CDI 30 >
		IFNZRO BGCORE-4&4000 <
			-EMXNOP+EMDOT		/
			-EMERROR+EMDOT		/
			-EMERROR+EMDOT		/ >
013563  7604		-EMERROR+EMDOT		/6234 RIB
013564  7575		-EMXNOP+EMDOT		/6235 CDF 130 OR DM8E: LTM
013565  7604		-EMERROR+EMDOT		/6236 CIF 130
013566  7604		-EMERROR+EMDOT		/6237 CDI 130
013567  7604		-EMERROR+EMDOT		/6240 LRR OF KT8A
		IFZERO BGCORE-5&4000 <
013570  7704		-EMCDIF+EMDOT		/6241 CDF 40
013571  7704		-EMCDIF+EMDOT		/6242 CIF 40
013572  7704		-EMCDIF+EMDOT		/6243 CDI 40 >
		IFNZRO BGCORE-5&4000 <
			-EMXNOP+EMDOT		/
			-EMERROR+EMDOT		/
			-EMERROR+EMDOT		/ >
013573  7604		-EMERROR+EMDOT		/6244 RMF

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 159-1

013574  7575		-EMXNOP+EMDOT		/6245 CDF 140 OR DM8E: LRM
013575  7604		-EMERROR+EMDOT		/6246 CIF 140
013576  7604		-EMERROR+EMDOT		/6247 CDI 140
013577  7604		-EMERROR+EMDOT		/6250 RRR OF KT8A
		IFZERO BGCORE-6&4000 <
013600  7704		-EMCDIF+EMDOT		/6251 CDF 50
013601  7704		-EMCDIF+EMDOT		/6252 CIF 50
013602  7704		-EMCDIF+EMDOT		/6253 CDI 50 >
		IFNZRO BGCORE-6&4000 <
			-EMXNOP+EMDOT		/
			-EMERROR+EMDOT		/
			-EMERROR+EMDOT		/ >
013603  7576		-EMXSKP+EMDOT		/6254 SINT: SKIP-0N-MULTI8
013604  7575		-EMXNOP+EMDOT		/6255 CDF 150
013605  7604		-EMERROR+EMDOT		/6256 CIF 150
013606  7604		-EMERROR+EMDOT		/6257 CDI 150
013607  7604		-EMERROR+EMDOT		/6260 LUSR OF KT8A
		IFZERO BGCORE-7&4000 <
013610  7704		-EMCDIF+EMDOT		/6261 CDF 60
013611  7704		-EMCDIF+EMDOT		/6262 CIF 60
013612  7704		-EMCDIF+EMDOT		/6263 CDI 60 >
		IFNZRO BGCORE-7&4000 <
			-EMXNOP+EMDOT		/
			-EMERROR+EMDOT		/
			-EMERROR+EMDOT		/ >
013613  6772		-EMSPY+EMDOT		/6264 CUF: LOOK-INTO-REAL-MEMORY
013614  7575		-EMXNOP+EMDOT		/6265 CDF 160 OR DM8E: SMME
013615  7604		-EMERROR+EMDOT		/6266 CIF 160
013616  7604		-EMERROR+EMDOT		/6267 CDI 160
013617  7604		-EMERROR+EMDOT		/6270 RUSR OF KT8A
		IFZERO BGCORE-10&4000 <
013620  7704		-EMCDIF+EMDOT		/6271 CDF 70
013621  7704		-EMCDIF+EMDOT		/6272 CIF 70
013622  7704		-EMCDIF+EMDOT		/6273 CDI 70 >
		IFNZRO BGCORE-10&4000 <
			-EMXNOP+EMDOT		/
			-EMERROR+EMDOT		/
			-EMERROR+EMDOT		/ >
013623  7604		-EMERROR+EMDOT		/6274 SUF: ????
013624  7575		-EMXNOP+EMDOT		/6275 CDF 170 OR DM8E: CMME
013625  7604		-EMERROR+EMDOT		/6276 CIF 170
013626  7604		-EMERROR+EMDOT		/6277 CDI 170

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 160

		/TABLE OF PROCESSOR (GROUP 00) IOT'S
013627  6312	EM00TB,	-EMHAND+EMDOT	/'SKON': IS HANDLER CALL IN MULTI8
013630  7604		-EMERROR+EMDOT	/'ION' : NOT ON VIRTUAL MACHINE
013631  7314		-EMREDY+EMDOT	/'IOF' : INTERRUPT IS VIRTUALLY OFF
013632  7314		-EMREDY+EMDOT	/'SRQ' : NO INTERRUPT REQUEST
013633  7604		-EMERROR+EMDOT	/'GTF' : NO GOOD
013634  7604		-EMERROR+EMDOT	/'RTF' : RESTORE WHAT?
		IFNDEF EAE <
			-EMREDY+EMDOT	/'SGT' : NO EAE, NO SKIP >
		IFDEF EAE <
013635  7325		-EMSGT+EMDOT	/'SGT' : EAE, TEST IF SKIP >
013636  7611		-EMCLCA+EMDOT	/'CAF' : DO ALL WE CAN

		/DISPATCH TABLE FOR TERMINAL IOT'S
013637  7021	EM03TB,	-DO6030+EMDOT		/6030
013640  7043		-DO6031+EMDOT		/6031
013641  7023		-DO6032+EMDOT		/6032
013642  7604		-EMERROR+EMDOT		/6033
013643  7002		-DO6034+EMDOT		/6034
013644  7604		-EMERROR+EMDOT		/6035
013645  7026		-DO6036+EMDOT		/6036
013646  7604		-EMERROR+EMDOT		/6037
013647  7314		-EMREDY+EMDOT		/6040
013650  7576		-EMXSKP+EMDOT		/6041
013651  7314		-EMREDY+EMDOT		/6042
013652  7604		-EMERROR+EMDOT		/6043
013653  7127		-DO6044+EMDOT		/6044
013654  7604		-EMERROR+EMDOT		/6045
013655  7127		-DO6046+EMDOT		/6046
013656  7604		-EMERROR+EMDOT		/6047

		IFDEF FPP <
		/DISPATCH TABLE FOR FPP8A HARDWARE INSTRUCTIONS
		EM55TB,	-EMERROR+EMDOT	/FFST  : START MAINTENANCE FIRMWARE
			-EMXSKP+EMDOT	/FPINT : FPP IS ALWAYS READY
			-FPICL+EMDOT	/FPICL : CLEAR STATUS AND AC
			-FPCOM+EMDOT	/FPCOM : SET APTHI AND SELECT FP/DP
			-EMREDY+EMDOT	/FPHLT : IMPOSSIBLE FOR EMULATOR (BUT ^C)
			-FPST+EMDOT	/FPST  : SET APTLOW, START EMULATOR AND SKIP
			-FPRST+EMDOT	/FPRST : READ STATUS
			-FPIST+EMDOT	/FPIST : SKIP, READ STATUS, CLEAR STATUS
			-EMERROR+EMDOT	/6560  : NOT USED
			-EMERROR+EMDOT	/FMODE : ENTER MAINTENANCE MODE
			-EMERROR+EMDOT	/6562  : NOT USED
			-EMERROR+EMDOT	/FMRB  : READ DATA BUFFER
			-EMERROR+EMDOT	/FMRP  : READ MUPC
			-EMERROR+EMDOT	/FMDO  : EXECUTE ONE STEP
			-EMERROR+EMDOT	/6566  : NOT USED
			-FPEP+EMDOT	/FPEP  : SELECT EP IF AC0=1

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 161

		/FPP EMULATOR INSTRUCTION DISPATCH LISTS

		SPCLST,	LDADX		/SPECIAL INSTRUCTIONS
			JUMPS
			FFJXN
			FFTRP3
			FFTRP4
			FFNOP		/LTR?
			FFNOP		/LEA,IMUL?
			FFNOP		/LEAI,IMULI?

		LAXLST,	FFLDX		/LDADX GROUP
			FFADDX
			FFNOP
			FFNOP
			FFNOP
			FFNOP
			FFNOP
			FFNOP

		JMPLST,	FFJEQ		/VARIOUS JUMP INSTR.
			FFJGE
			FFJLE
			FFJA
			FFJNE
			FFJLT
			FFJGT
			FFJAL
			FFSETX		/MUST FOLLOW JMPLST
			FFSETB
			FFJSA
			FFJSR
			FFNOP
			FFNOP
			FFNOP
			FFNOP

		XRLST,	FFALN		/MAINLY XR INSTRUCTIONS
			FFATX		/LIST ONLY 7 LONG!
			FFXTA
			FFNOP
			FFSTRE
			FFNOP
			FFNOP

		OPRLST,	FFEXIT		/AND THE OPERATES
			FFPAUS
			FFCLA
			FFNEG
			FFNORM
			FFSTRF
			FFSTRD
			FFJAC		/ END IFDEF FPP >

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 162

		/TABLE OF "GIANT IOT'S", UAC IS INDEX AFTER 6770
013657  6562	GIGATB,	-EMTIME+EMDOT	/0 TIME-OF-DAY REQUEST
013660  7727		-EMNUMB+EMDOT	/1 GET MACHINE AND TERMINAL NUMBER
013661  7550		-EMQUIT+EMDOT	/2 DISABLE KEYBOARD ECHO
013662  7547		-EMECHO+EMDOT	/3 ENABLE KEYBOARD ECHO
013663  2701		"T^100+"A&3777	/4 TALK
013664  6073		-EMOPEN+EMDOT	/5 OPEN/CLOSE PROCESSOR
013665  7172		-EMSTLL+EMDOT	/6 STALL THE BG FOR N SECONDS
013666  7177		-ACCRST+EMDOT	/7 RESET ACCOUNT REGISTERS
013667  7206		-ACCRD+EMDOT	/10 READ ACCOUNT REGISTERS
013670  7604		-EMERROR+EMDOT	/11 FREE SLOT
013671  7327		-EMVER+EMDOT	/12 6-BIT PACKED MULTI8 VERSION
013672  7435		-BGREL+EMDOT	/13 RELEASE DEVICES FOR INTERACTIVE JOB
013673  7604		-EMERROR+EMDOT	/14 RESERVED
013674  7604		-EMERROR+EMDOT	/15 RESERVED
013675  7604		-EMERROR+EMDOT	/16 RESERVED
013676  7604		-EMERROR+EMDOT	/17 RESERVED
013677  0000		ZBLOCK GIGATB+GIGAMX-.	/END OF GIGATB


/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 163

		/DEFINITIONS FOR BG DATA AREA;ALL RELATIVE

		BGDATA,
	0000	BG1,	RELOC 0		/ALL FOLLOWING SYMBOLS ARE RELATIVE

010000* 5400	USTAT,	INACTIVE+BGSTOP+ONDISK	/STATUS WORD
010001* 0000	UMQ,	0		/USERS MEMORY QUOTIENT REGISTER
010002* 0000	USC,	0		/MSS.SSS.FFF.XXXA/B MODE,
					/STEPCOUNTER AND LOCKED FIELD
010003* 7201	UPC,	7201		/USERS CURRENT PROGRAM COUNTER
010004* 0100	UFLDS,	100		/LGX.XXU.III.FFF: LINK, GREATER-THAN,
					/USER MODE, VIRTUAL INSTRUCTION & DATAFIELD
010005* 0000	UAC,	0		/USERS CURRENT ACCUMULATOR
010006* 0000	UINST,	0		/LAST EMULATED INSTRUCTION
010007* 0000	USW,	0		/USERS SWITCH REGISTER (VIRTUAL)
010010* 0000	UTEMP,	0		/SCRATCH LOCATION #1
010011* 0000	UTEM2,	0		/SCRATCH LOCATION #2
010012* 0000	UDTV,	ZBLOCK 3	/TRANSFER VECTOR
010015* 0000	UASEM,	ZBLOCK ASEMMX	/EMULATORS PLUG THEIR NAMES HERE
010025* 0003	UBUFIN,	3		/COUNTER OF INPUT BUFFER
010026* 3001		BG1IN+1		/READ POINTER
010027* 3004		BG1IN+1+3	/WRITE POINTER
010030* 0000	UBUFOUT,0		/COUNTER OF OUTPUT BUFFER
010031* 3021		BG1OUT+1	/READ POINTER
010032* 3021		BG1OUT+1	/WRITE POINTER
010033* 4064	UWRTR,	KHOBG1+4	/TCBP OF OUTPUT WRITER
010034* 4074	UCUR,	EMBG1+4		/TCBP OF EMULATOR
		IFDEF USESY1 <
010035* 2631	UCHNL0,	USYS1		/DRIVER FOR USERS' SYS: >
		IFNDEF USESY1 <
		UCHNL0,	"D^100+"K&3777	/DRIVER FOR USERS' SYS: >

010036* 4511	UNUMB,	4511		/FILE STRUCTURED, DEVICE TYPE 51, UNIT #
010037* 2631		"S^100+"Y&3777	/ENTRY FOR DSK0:
010040* 6500		6500		/READ ONLY, OS/8 SYSTEM, UNIT 0
010041* 0000		ZBLOCK 4	/CHANNEL 2-3
010045* 0000	UECHO,	0		/ECHO FLAG, 4000=NO ECHO
		IFNDEF SINGL8 <
010046* 0030	UFLD0,	FIELDS^10	/FIRST FIELD OF BG1 IN CORE
010047* 0000		ZBLOCK BGCORE-1	/TABLE OF REAL FIELDS, 0=NOT-RESIDENT >
		IFDEF SINGL8 <
		UFLD0,	20;30;40;50	/ALL FIELDS IN CORE FOR BG1 >
010056* 0000	UCHAR,	0		/THE CURRENT INPUT CHARACTER
		IFZERO TTYMAX-1&4000 <
010057* 4044	UKB,	K1TCBP+0	/TCBP OF INPUT TASK
010060* 4034	UTTY,	T1TCBP+0	/TCBP OF OUTPUT HANDLER >
		IFNZRO TTYMAX-1&4000 <
		UKB,	0		/DETACHED BACKBGOUND
		UTTY,	0		/DETACHED BACKGROUND >
010061* 0000	UCOUNT,	0		/COUNTER FOR "BS"
010062* 0034	USLOT,	MAXSLOT+1	/WAIT-FOR-BG-IN-CORE SLOT
010063* 0000	UACCNT,	ZBLOCK 2	/LOWORDER, HIGHORDER CPU USAGE
					/IN UNITS OF DGNTICK
		IFDEF FPP <
		UFPST,	0		/FPP STATUS

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 163-1

		UAPTH,	0		/HIGH 3 BITS OF APT ADDRESS
		UAPTL,	0		/LOW 12 BITS OF APT ADDRES >
		UNEXT,
010065* 3775	IFNZRO BGMAX-1 <BG2	/POINTER TO NEXT BG >
		IFZERO BGMAX-1 <BG1	/POINTER TO FIRST BG >
	0066	UEND=.			/END FOR THIS BG

	3775		RELOC		/END OF RELATIVE DEFINITIONS

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 164

		IFZERO BGMAX-2&4000 <	/THE SECOND BG:
	0000	BG2,	RELOC 0		/ALL FOLLOWING SYMBOLS ARE RELATIVE

010000* 5400	USTAT,	INACTIVE+BGSTOP+ONDISK	/STATUS FOR BACKGROUND SCHEDULER
010001* 0000	UMQ,	0		/USERS MEMORY QUOTIENT REGISTER
010002* 0000	USC,	0		/MSS.SSS.FFF.XXXA/B MODE,
					/STEPCOUNTER AND LOCKED FIELD
010003* 7201	UPC,	7201		/USERS CURRENT PROGRAM COUNTER
010004* 0100	UFLDS,	100		/LGX.XXU.III.FFF: LINK, GREATER-THAN,
					/USER MODE, VIRTUAL INSTRUCTION & DATAFIELD
010005* 0000	UAC,	0		/USERS CURRENT ACCUMULATOR
010006* 0000	UINST,	0		/LAST EMULATED INSTRUCTION
010007* 0000	USW,	0		/USERS SWITCH REGISTER (VIRTUAL)
010010* 0000	UTEMP,	0		/SCRATCH LOCATION #1
010011* 0000	UTEM2,	0		/SCRATCH LOCATION #2
010012* 0000	UDTV,	ZBLOCK 3	/TRANSFER VECTOR
010015* 0000	UASEM,	ZBLOCK ASEMMX	/EMULATORS PLUG THEIR NAMES HERE
010025* 0003	UBUFIN,	3		/COUNTER OF INPUT BUFFER
010026* 3041		BG2IN+1		/READ POINTER
010027* 3044		BG2IN+1+3	/WRITE POINTER
010030* 0000	UBUFOUT,0		/COUNTER OF OUTPUT BUFFER
010031* 3061		BG2OUT+1	/READ POINTER
010032* 3061		BG2OUT+1	/WRITE POINTER
010033* 4114	UWRTR,	KHOBG2+4	/TCBP OF OUTPUT WRITER
010034* 4124	UCUR,	EMBG2+4		/TCBP OF EMULATOR
		IFDEF USESY2 <
		UCHNL0,	USYS2		/DRIVER FOR USERS' SYS: >
		IFNDEF USESY2 <
010035* 0713	UCHNL0,	"D^100+"K&3777	/DRIVER FOR USERS' SYS: >

010036* 4522	UNUMB,	4522		/FILE STRUCTURED, DEVICE TYPE 52, UNIT #
010037* 2631		"S^100+"Y&3777	/ENTRY FOR DSK0:
010040* 6500		6500		/READ ONLY, OS/8 SYSTEM, UNIT 0
010041* 0000		ZBLOCK 4	/CHANNEL 2-3
010045* 0000	UECHO,	0		/ECHO FLAG, 4000=NO ECHO
		IFNDEF SINGL8 <
010046* 0000	UFLD0,	ZBLOCK BGCORE	/TABLE OF REAL FIELDS >
		IFDEF SINGL8 <
		UFLD0,	60;70;0;0	/FIELD 0 & 1 IN CORE FOR BG2 >
010056* 0000	UCHAR,	0		/THE CURRENT INPUT CHARACTER
		IFZERO TTYMAX-2&4000 <
		UKB,	K1TCBP+20	/TCBP OF INPUT TASK
		UTTY,	T1TCBP+20	/TCBP OF OUTPUT HANDLER >
		IFNZRO TTYMAX-2&4000 <
010057* 0000	UKB,	0		/DETACHED BACKBGOUND
010060* 0000	UTTY,	0		/DETACHED BACKGROUND >
010061* 0000	UCOUNT,	0		/COUNTER FOR "BS"
010062* 0035	USLOT,	MAXSLOT+2	/WAIT-FOR-BG-IN-CORE SLOT
010063* 0000	UACCNT,	ZBLOCK 2	/LOWORDER, HIGHORDER CPU USAGE
					/IN UNITS OF DGNTICK
		IFDEF FPP <
		UFPST,	0		/FPP STATUS
		UAPTH,	0		/HIGH 3 BITS OF APT ADDRESS
		UAPTL,	0		/LOW 12 BITS OF APT ADDRES >
		UNEXT,

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 164-1

		IFZERO BGMAX-2 <BG1>	/POINTER TO FIRST BG
010065* 4063	IFNZRO BGMAX-2 <BG3>	/POINTER TO NEXT BG
	0066	UEND=.			/END FOR THIS BG

	4063		RELOC		/END OF RELATIVE DEFINITIONS >

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 165

		IFZERO BGMAX-3&4000 <	/THE THIRD BG:
	0000	BG3,	RELOC 0		/ALL FOLLOWING SYMBOLS ARE RELATIVE

010000* 5400	USTAT,	INACTIVE+BGSTOP+ONDISK	/STATUS FOR BACKGROUND SCHEDULER
010001* 0000	UMQ,	0		/USERS MEMORY QUOTIENT REGISTER
010002* 0000	USC,	0		/MSS.SSS.FFF.XXXA/B MODE,
					/STEPCOUNTER AND LOCKED FIELD
010003* 7201	UPC,	7201		/USERS CURRENT PROGRAM COUNTER
010004* 0100	UFLDS,	100		/LGX.XXU.III.FFF: LINK, GREATER-THAN,
					/USER MODE, VIRTUAL INSTRUCTION & DATAFIELD
010005* 0000	UAC,	0		/USERS CURRENT ACCUMULATOR
010006* 0000	UINST,	0		/LAST EMULATED INSTRUCTION
010007* 0000	USW,	0		/USERS SWITCH REGISTER (VIRTUAL)
010010* 0000	UTEMP,	0		/SCRATCH LOCATION #1
010011* 0000	UTEM2,	0		/SCRATCH LOCATION #2
010012* 0000	UDTV,	ZBLOCK 3	/TRANSFER VECTOR
010015* 0000	UASEM,	ZBLOCK ASEMMX	/EMULATORS PLUG THEIR NAMES HERE
010025* 0003	UBUFIN,	3		/COUNTER OF INPUT BUFFER
010026* 3101		BG3IN+1		/READ POINTER
010027* 3104		BG3IN+1+3	/WRITE POINTER
010030* 0000	UBUFOUT,0		/COUNTER OF OUTPUT BUFFER
010031* 3121		BG3OUT+1	/READ POINTER
010032* 3121		BG3OUT+1	/WRITE POINTER
010033* 4144	UWRTR,	KHOBG3+4	/TCBP OF OUTPUT WRITER
010034* 4154	UCUR,	EMBG3+4		/TCBP OF EMULATOR
		IFDEF USESY3 <
		UCHNL0,	USYS3		/DRIVER FOR USERS' SYS: >
		IFNDEF USESY3 <
010035* 0713	UCHNL0,	"D^100+"K&3777	/DRIVER FOR USERS' SYS: >

010036* 4533	UNUMB,	4533		/FILE STRUCTURED, DEVICE TYPE 53, UNIT #
010037* 2631		"S^100+"Y&3777	/ENTRY FOR DSK0:
010040* 6500		6500		/READ ONLY, OS/8 SYSTEM, UNIT 0
010041* 0000		ZBLOCK 4	/CHANNEL 2-3
010045* 0000	UECHO,	0		/ECHO FLAG, 4000=NO ECHO
010046* 0000	UFLD0,	ZBLOCK BGCORE	/TABLE OF REAL FIELDS
010056* 0000	UCHAR,	0		/THE CURRENT INPUT CHARACTER
		IFZERO TTYMAX-3&4000 <
		UKB,	K1TCBP+40	/TCBP OF INPUT TASK
		UTTY,	T1TCBP+40	/TCBP OF OUTPUT HANDLER >
		IFNZRO TTYMAX-3&4000 <
010057* 0000	UKB,	0		/DETACHED BACKBGOUND
010060* 0000	UTTY,	0		/DETACHED BACKGROUND >
010061* 0000	UCOUNT,	0		/COUNTER FOR "BS"
010062* 0036	USLOT,	MAXSLOT+3	/WAIT-FOR-BG-IN-CORE SLOT
010063* 0000	UACCNT,	ZBLOCK 2	/LOWORDER, HIGHORDER CPU USAGE
					/IN UNITS OF DGNTICK
		IFDEF FPP <
		UFPST,	0		/FPP STATUS
		UAPTH,	0		/HIGH 3 BITS OF APT ADDRESS
		UAPTL,	0		/LOW 12 BITS OF APT ADDRES >
		UNEXT,
010065* 3707	IFZERO BGMAX-3 <BG1>	/POINTER TO FIRST BG
		IFNZRO BGMAX-3 <BG4>	/POINTER TO NEXT BG
	0066	UEND=.			/END FOR THIS BG

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 165-1


	4151		RELOC		/END OF RELATIVE DEFINITIONS >

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 166

		IFZERO BGMAX-4&4000 <	/THE FOURTH BG:
		BG4,	RELOC 0		/ALL FOLLOWING SYMBOLS ARE RELATIVE

		USTAT,	INACTIVE+BGSTOP+ONDISK	/STATUS FOR BACKGROUND SCHEDULER
		UMQ,	0		/USERS MEMORY QUOTIENT REGISTER
		USC,	0		/MSS.SSS.FFF.XXXA/B MODE,
					/STEPCOUNTER AND LOCKED FIELD
		UPC,	7201		/USERS CURRENT PROGRAM COUNTER
		UFLDS,	100		/LGX.XXU.III.FFF: LINK, GREATER-THAN,
					/USER MODE, VIRTUAL INSTRUCTION & DATAFIELD
		UAC,	0		/USERS CURRENT ACCUMULATOR
		UINST,	0		/LAST EMULATED INSTRUCTION
		USW,	0		/USERS SWITCH REGISTER (VIRTUAL)
		UTEMP,	0		/SCRATCH LOCATION #1
		UTEM2,	0		/SCRATCH LOCATION #2
		UDTV,	ZBLOCK 3	/TRANSFER VECTOR
		UASEM,	ZBLOCK ASEMMX	/EMULATORS PLUG THEIR NAMES HERE
		UBUFIN,	3		/COUNTER OF INPUT BUFFER
			BG4IN+1		/READ POINTER
			BG4IN+1+3	/WRITE POINTER
		UBUFOUT,0		/COUNTER OF OUTPUT BUFFER
			BG4OUT+1	/READ POINTER
			BG4OUT+1	/WRITE POINTER
		UWRTR,	KHOBG4+4	/TCBP OF OUTPUT WRITER
		UCUR,	EMBG4+4		/TCBP OF EMULATOR
		IFDEF USESY4 <
		UCHNL0,	USYS4		/DRIVER FOR USERS' SYS: >
		IFNDEF USESY4 <
		UCHNL0,	"D^100+"K&3777	/DRIVER FOR USERS' SYS: >

		UNUMB,	4544		/FILE STRUCTURED, DEVICE TYPE 54, UNIT #
			"S^100+"Y&3777	/ENTRY FOR DSK0:
			6500		/READ ONLY, OS/8 SYSTEM, UNIT 0
			ZBLOCK 4	/CHANNEL 2-3
		UECHO,	0		/ECHO FLAG, 4000=NO ECHO
		UFLD0,	ZBLOCK BGCORE	/TABLE OF REAL FIELDS
		UCHAR,	0		/THE CURRENT INPUT CHARACTER
		IFZERO TTYMAX-4&4000 <
		UKB,	K1TCBP+60	/TCBP OF INPUT TASK
		UTTY,	T1TCBP+60	/TCBP OF OUTPUT HANDLER >
		IFNZRO TTYMAX-4&4000 <
		UKB,	0		/DETACHED BACKBGOUND
		UTTY,	0		/DETACHED BACKGROUND >
		UCOUNT,	0		/COUNTER FOR "BS"
		USLOT,	MAXSLOT+4	/WAIT-FOR-BG-IN-CORE SLOT
		UACCNT,	ZBLOCK 2	/LOWORDER, HIGHORDER CPU USAGE
					/IN UNITS OF DGNTICK
		IFDEF FPP <
		UFPST,	0		/FPP STATUS
		UAPTH,	0		/HIGH 3 BITS OF APT ADDRESS
		UAPTL,	0		/LOW 12 BITS OF APT ADDRES >
		UNEXT,
		IFZERO BGMAX-4 <BG1>	/POINTER TO FIRST BG
		IFNZRO BGMAX-4 <BG5>	/POINTER TO NEXT BG
		UEND=.			/END FOR THIS BG

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 166-1


			RELOC		/END OF RELATIVE DEFINITIONS >

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 167

		IFZERO BGMAX-5&4000 <	/THE FIFTH BG:
		BG5,	RELOC 0		/ALL FOLLOWING SYMBOLS ARE RELATIVE

		USTAT,	INACTIVE+BGSTOP+ONDISK	/STATUS FOR BACKGROUND SCHEDULER
		UMQ,	0		/USERS MEMORY QUOTIENT REGISTER
		USC,	0		/MSS.SSS.FFF.XXXA/B MODE,
					/STEPCOUNTER AND LOCKED FIELD
		UPC,	7201		/USERS CURRENT PROGRAM COUNTER
		UFLDS,	100		/LGX.XXU.III.FFF: LINK, GREATER-THAN,
					/USER MODE, VIRTUAL INSTRUCTION & DATAFIELD
		UAC,	0		/USERS CURRENT ACCUMULATOR
		UINST,	0		/LAST EMULATED INSTRUCTION
		USW,	0		/USERS SWITCH REGISTER (VIRTUAL)
		UTEMP,	0		/SCRATCH LOCATION #1
		UTEM2,	0		/SCRATCH LOCATION #2
		UDTV,	ZBLOCK 3	/TRANSFER VECTOR
		UASEM,	ZBLOCK ASEMMX	/EMULATORS PLUG THEIR NAMES HERE
		UBUFIN,	3		/COUNTER OF INPUT BUFFER
			BG5IN+1		/READ POINTER
			BG5IN+1+3	/WRITE POINTER
		UBUFOUT,0		/COUNTER OF OUTPUT BUFFER
			BG5OUT+1	/READ POINTER
			BG5OUT+1	/WRITE POINTER
		UWRTR,	KHOBG5+4	/TCBP OF OUTPUT WRITER
		UCUR,	EMBG5+4		/TCBP OF EMULATOR
		IFDEF USESY5 <
		UCHNL0,	USYS5		/DRIVER FOR USERS' SYS: >
		IFNDEF USESY5 <
		UCHNL0,	"D^100+"K&3777	/DRIVER FOR USERS' SYS: >

		UNUMB,	4555		/FILE STRUCTURED, DEVICE TYPE 55, UNIT #
			"S^100+"Y&3777	/ENTRY FOR DSK0:
			6500		/READ ONLY, OS/8 SYSTEM, UNIT 0
			ZBLOCK 4	/CHANNEL 2-3
		UECHO,	0		/ECHO FLAG, 4000=NO ECHO
		UFLD0,	ZBLOCK BGCORE	/TABLE OF REAL FIELDS
		UCHAR,	0		/THE CURRENT INPUT CHARACTER
		IFZERO TTYMAX-5&4000 <
		UKB,	K1TCBP+100	/TCBP OF INPUT TASK
		UTTY,	T1TCBP+100	/TCBP OF OUTPUT HANDLER >
		IFNZRO TTYMAX-5&4000 <
		UKB,	0		/DETACHED BACKBGOUND
		UTTY,	0		/DETACHED BACKGROUND >
		UCOUNT,	0		/COUNTER FOR "BS"
		USLOT,	MAXSLOT+5	/WAIT-FOR-BG-IN-CORE SLOT
		UACCNT,	ZBLOCK 2	/LOWORDER, HIGHORDER CPU USAGE
					/IN UNITS OF DGNTICK
		IFDEF FPP <
		UFPST,	0		/FPP STATUS
		UAPTH,	0		/HIGH 3 BITS OF APT ADDRESS
		UAPTL,	0		/LOW 12 BITS OF APT ADDRES >
		UNEXT,
		IFZERO BGMAX-5 <BG1>	/POINTER TO FIRST BG
		IFNZRO BGMAX-5 <BG6>	/POINTER TO NEXT BG
		UEND=.			/END FOR THIS BG

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 167-1


			RELOC		/END OF RELATIVE DEFINITIONS >

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 168

		IFZERO BGMAX-6&4000 <	/THE SIXTH BG:
		BG6,	RELOC 0		/ALL FOLLOWING SYMBOLS ARE RELATIVE

		USTAT,	INACTIVE+BGSTOP+ONDISK	/STATUS FOR BACKGROUND SCHEDULER
		UMQ,	0		/USERS MEMORY QUOTIENT REGISTER
		USC,	0		/MSS.SSS.FFF.XXXA/B MODE,
					/STEPCOUNTER AND LOCKED FIELD
		UPC,	7201		/USERS CURRENT PROGRAM COUNTER
		UFLDS,	100		/LGX.XXU.III.FFF: LINK, GREATER-THAN,
					/USER MODE, VIRTUAL INSTRUCTION & DATAFIELD
		UAC,	0		/USERS CURRENT ACCUMULATOR
		UINST,	0		/LAST EMULATED INSTRUCTION
		USW,	0		/USERS SWITCH REGISTER (VIRTUAL)
		UTEMP,	0		/SCRATCH LOCATION #1
		UTEM2,	0		/SCRATCH LOCATION #2
		UDTV,	ZBLOCK 3	/TRANSFER VECTOR
		UASEM,	ZBLOCK ASEMMX	/EMULATORS PLUG THEIR NAMES HERE
		UBUFIN,	3		/COUNTER OF INPUT BUFFER
			BG6IN+1		/READ POINTER
			BG6IN+1+3	/WRITE POINTER
		UBUFOUT,0		/COUNTER OF OUTPUT BUFFER
			BG6OUT+1	/READ POINTER
			BG6OUT+1	/WRITE POINTER
		UWRTR,	KHOBG6+4	/TCBP OF OUTPUT WRITER
		UCUR,	EMBG6+4		/TCBP OF EMULATOR
		IFDEF USESY6 <
		UCHNL0,	USYS6		/DRIVER FOR USERS' SYS: >
		IFNDEF USESY6 <
		UCHNL0,	"D^100+"K&3777	/DRIVER FOR USERS' SYS: >

		UNUMB,	4566		/FILE STRUCTURED, DEVICE TYPE 56, UNIT #
			"S^100+"Y&3777	/ENTRY FOR DSK0:
			6500		/READ ONLY, OS/8 SYSTEM, UNIT 0
			ZBLOCK 4	/CHANNEL 2-3
		UECHO,	0		/ECHO FLAG, 4000=NO ECHO
		UFLD0,	ZBLOCK BGCORE	/TABLE OF REAL FIELDS
		UCHAR,	0		/THE CURRENT INPUT CHARACTER
		IFZERO TTYMAX-6&4000 <
		UKB,	K1TCBP+120	/TCBP OF INPUT TASK
		UTTY,	T1TCBP+120	/TCBP OF OUTPUT HANDLER >
		IFNZRO TTYMAX-6&4000 <
		UKB,	0		/DETACHED BACKBGOUND
		UTTY,	0		/DETACHED BACKGROUND >
		UCOUNT,	0		/COUNTER FOR "BS"
		USLOT,	MAXSLOT+6	/WAIT-FOR-BG-IN-CORE SLOT
		UACCNT,	ZBLOCK 2	/LOWORDER, HIGHORDER CPU USAGE
					/IN UNITS OF DGNTICK
		IFDEF FPP <
		UFPST,	0		/FPP STATUS
		UAPTH,	0		/HIGH 3 BITS OF APT ADDRESS
		UAPTL,	0		/LOW 12 BITS OF APT ADDRES >
		UNEXT,
		IFZERO BGMAX-6 <BG1>	/POINTER TO FIRST BG
		IFNZRO BGMAX-6 <BG7>	/POINTER TO NEXT BG
		UEND=.			/END FOR THIS BG

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 168-1


			RELOC		/END OF RELATIVE DEFINITIONS >

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 169

		IFZERO BGMAX-7&4000 <	/THE SEVENTH BG:
		BG7,	RELOC 0		/ALL FOLLOWING SYMBOLS ARE RELATIVE

		USTAT,	INACTIVE+BGSTOP+ONDISK	/STATUS FOR BACKGROUND SCHEDULER
		UMQ,	0		/USERS MEMORY QUOTIENT REGISTER
		USC,	0		/MSS.SSS.FFF.XXXA/B MODE,
					/STEPCOUNTER AND LOCKED FIELD
		UPC,	7201		/USERS CURRENT PROGRAM COUNTER
		UFLDS,	100		/LGX.XXU.III.FFF: LINK, GREATER-THAN,
					/USER MODE, VIRTUAL INSTRUCTION & DATAFIELD
		UAC,	0		/USERS CURRENT ACCUMULATOR
		UINST,	0		/LAST EMULATED INSTRUCTION
		USW,	0		/USERS SWITCH REGISTER (VIRTUAL)
		UTEMP,	0		/SCRATCH LOCATION #1
		UTEM2,	0		/SCRATCH LOCATION #2
		UDTV,	ZBLOCK 3	/TRANSFER VECTOR
		UASEM,	ZBLOCK ASEMMX	/EMULATORS PLUG THEIR NAMES HERE
		UBUFIN,	3		/COUNTER OF INPUT BUFFER
			BG7IN+1		/READ POINTER
			BG7IN+1+3	/WRITE POINTER
		UBUFOUT,0		/COUNTER OF OUTPUT BUFFER
			BG7OUT+1	/READ POINTER
			BG7OUT+1	/WRITE POINTER
		UWRTR,	KHOBG7+4	/TCBP OF OUTPUT WRITER
		UCUR,	EMBG7+4		/TCBP OF EMULATOR
		IFDEF USESY7 <
		UCHNL0,	USYS7		/DRIVER FOR USERS' SYS: >
		IFNDEF USESY7 <
		UCHNL0,	"D^100+"K&3777	/DRIVER FOR USERS' SYS: >

		UNUMB,	4577		/FILE STRUCTURED, DEVICE TYPE 57, UNIT #
			"S^100+"Y&3777	/ENTRY FOR DSK0:
			6500		/READ ONLY, OS/8 SYSTEM, UNIT 0
			ZBLOCK 4	/CHANNEL 2-3
		UECHO,	0		/ECHO FLAG, 4000=NO ECHO
		UFLD0,	ZBLOCK BGCORE	/TABLE OF REAL FIELDS
		UCHAR,	0		/THE CURRENT INPUT CHARACTER
		IFZERO TTYMAX-7&4000 <
		UKB,	K1TCBP+140	/TCBP OF INPUT TASK
		UTTY,	T1TCBP+140	/TCBP OF OUTPUT HANDLER >
		IFNZRO TTYMAX-7&4000 <
		UKB,	0		/DETACHED BACKBGOUND
		UTTY,	0		/DETACHED BACKGROUND >
		UCOUNT,	0		/COUNTER FOR "BS"
		USLOT,	MAXSLOT+7	/WAIT-FOR-BG-IN-CORE SLOT
		UACCNT,	ZBLOCK 2	/LOWORDER, HIGHORDER CPU USAGE
					/IN UNITS OF DGNTICK
		IFDEF FPP <
		UFPST,	0		/FPP STATUS
		UAPTH,	0		/HIGH 3 BITS OF APT ADDRESS
		UAPTL,	0		/LOW 12 BITS OF APT ADDRES >
		UNEXT,	BG1		/NOTE! BG7 IS ALWAYS THE LAST ONE
		UEND=.			/END FOR THIS BG

			RELOC		/END OF RELATIVE DEFINITIONS >

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 169-1

					/END OF BGMAX CONDITIONAL >

/M4.PA 9-JUN-80				  PAL8-V40A 26-JAN-86 PAGE 170

		/END OF FIELD 1 DATA AREA.
	4200	PAGE
	4200	DOTF10=.
		IFNZRO PASS1 <
		ENDF10=DOTF10-1
		ENDF20=DOTF20-1
		ENDF30=DOTF30-1
		ENDF40=DOTF40-1
		ENDF50=DOTF50-1
		ENDF60=DOTF60-1
		ENDF70=DOTF70-1>

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 171

		/M5.PA 9-SEP-80
		/EQUATES:

	7746	JSW=7746	/ADDRESS OF OS/8 JOB STATUS WORD
	1000	NO=1000		/DON'T RESTART BIT IN JSW
	7607	SYSHND=7607	/ENTRYPOINT OF SYSTEM HANDLER
	7700	USR=7700	/USER SERVICE ROUTINE.
	0001	FETCH=1		/FETCH HANDLER REQUEST CODE
	0002	LOOKUP=2	/FILENAME LOOKUP REQUEST CODE
	0003	ENTER=3		/ENTER NEW OUTPUT FILE
	0004	CLOSE=4		/CLOSE PERMANENT FILE
	0005	CD=5		/COMMAND DECODE
	0010	USRIN=10	/CALL USR INTO CORE REQUEST CODE
	0011	USROUT=11	/DISMISS USR REQUEST CODE
	0012	INQUIRE=12	/GET DEVICE NUMBER REQUEST CODE

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 172

	0003		FIELD BGFLD%10
	0000		*0
030000  0000	TEMP,	0
030001  0000	TEMP1,	0
030002  0000	TEMP2,	0
030003  0000	TEMP3,	0
030004  0000		ZBLOCK 3	/ODT BREAKPOINT
030007  0000	TEMP4,	0
030010  0000	AUTO10,	0
030011  0000	AUTO11,	0
030012  0000	AUTO12,	0
030013  0000	AUTO13,	0
030014  0000	AUTO14,	0
030015  0000	AUTO15,	0
030016  0000	AUTO16,	0
030017  0000	AUTO17,	0
030020  0000	TEMP5,	0
030021  0000	TEMP6,	0
030022  0000	TEMP7,	0
030023  0000	ZNUM,	0
030024  0000	BINAC,	0
030025  0000	CHANGD,	0	/IF ZERO, CORE IMAGE MUST BE SAVED
030026  7777	CHAIND,	-1	/CHAIN SWITCH
	0200		*200

030200  7300	PWRUP,	CLA CLL		/
030201  1177		TAD [NO		/SET NOT-RESTART BIT
030202  6201		CDF 0		//
030203  3576		DCA I [JSW	//
030204  1175		TAD [GTF	//
030205  3574		DCA I [200	//RESTORE SKIPCHAIN
030206  6231		CDF BGFLD	/
030207  7301		AC0001		/ON SYS:
030210  6212		CIF 10
030211  4573		JMS I [7700	/DELETE THE OLD COPY OF MULTI8.SV
030212  0004		   CLOSE	/SOME INEXPERIENCED USERS GET
030213  0352		   MULTI8	/VERY CONFUSED BY AN OLD DATE!!
030214  0000		   0		/0 MEANS DELETE
030215  7200		CLA		/SO WHAT?
030216  4572		JMS I [COPYZ	/COPY PAGE ZERO IN FOREGROUND FIELDS
030217  4571		JMS I [SETNAM	/ENTER PREASSEMBLED TASKS IN NAMLST
030220  4570		JMS I [LNKTCB	/LINK THE FREE TASK CONTROL BLOCKS
030221  4567		JMS I [SAVE	/SAVE THE COMPLETE IMAGE IN 'MULTI8.SV'
030222  5577		JMP I [STRT	/AND START TASKBUILDING PHASE

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 173

030223  0000	SAVE,	0		/SAVE CORE IN 'MULTI8.SV'
030224  1025		TAD CHANGD
030225  7640		SZA CLA		/NEED TO SAVE ?
030226  5623		 JMP I SAVE	/NO, NOTHING CHANGED
030227  2025		ISZ CHANGD	/YES, RESET CHANGED FLAG
030230  1166		TAD [MULTI8
030231  3236		DCA STBLK
030232  7301		AC0001		/DEVICE IS SYS:
030233  6212		CIF 10		/
030234  4573		JMS I [7700	/LOOKUP THE FILE 'MULTI8.SV'
030235  0002		   LOOKUP
030236  0352	STBLK,	   MULTI8
030237  0000	LNGTH,	   0
030240  4314		 JMS NEWSAV	/CREATE THE SAVE FILE
030241  1237		TAD LNGTH	/GET MINUS FILE LENGTH
030242  1342		TAD NEWLEN
030243  7740		SMA SZA CLA	/LONG ENOUGH ?
030244  4314		 JMS NEWSAV	/TOO SHORT, MAKE A NEW SAVE FILE
030245  1236		TAD STBLK	/GET STARTING BLOCK NUMBER
030246  3255		DCA STBLK1	/AND MOVE IT TO THE FIRST WRITE REQUEST
030247  1236		TAD STBLK
030250  3565		DCA I [OFSET	/UPDATE OFFSET FOR TASKBUILDER
030251  6202		CIF 0		/WRITE THE CORE CONTROL BLOCK
030252  4564		JMS I [SYSHND	/IN THE FIRST BLOCK OF THE FILE
030253  4230		   4200+BGFLD
030254  0356		   CCB
030255  0000	STBLK1,	   0
030256  4563	ERR3,	 JMS I [ERROR	/?WRITING SYS:?
030257  1162		TAD [CCBLST-1	/POINTER TO CORE PARAMETERS LIST
030260  3010		DCA AUTO10	/WE USE IT IN SAVING THE FILE TOO
030261  1255		TAD STBLK1	/SET BLOCK NUMBER
030262  7001		IAC		/+1 FOR CCB
030263  3277		DCA STBLK2	/
030264  1356		TAD CCB		/NUMBER OF SEGMENTS
030265  3000		DCA TEMP	/IN COUNTER
030266  1410	SAVLOP,	TAD I AUTO10	/GET CORE ADDRESS
030267  3276		DCA ADR		/
030270  7330		AC4000		/SET WRITE-BIT
030271  1410		TAD I AUTO10	/
030272  3275		DCA FUN		/SET FUNCTION WORD
030273  6202		CIF 0		/WRITE THIS SEGMENT
030274  4564		JMS I [SYSHND	/
030275  0000	FUN,	   0
030276  0000	ADR,	   0
030277  0000	STBLK2,	   0
030300  4563	ERR3A,	 JMS I [ERROR	/?WRITING SYS:?

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 174

030301  1275		TAD FUN		/UPDATE BLOCKNUMBER
030302  0161		AND [3700
030303  7002		BSW
030304  7111		IAC CLL RAR	/ROUND UP TO # OF BLOCKS
030305  7450		SNA
030306  1160		 TAD [20
030307  1277		TAD STBLK2
030310  3277		DCA STBLK2
030311  2000		ISZ TEMP	/ALL SEGMENTS DONE ?
030312  5266		 JMP SAVLOP	/NO, CYCLE
030313  5623		JMP I SAVE	/YES, RETURN

030314  0000	NEWSAV,	0
030315  1256	ERR23A,	TAD ERR3
030316  3315		DCA ERR23A	/ONCE ONLY !
030317  1166		TAD [MULTI8
030320  3325		DCA STBLK0	/SETUP POINTER TO FILENAME
030321  7301		AC0001
030322  6212		CIF 10
030323  4573		JMS I [7700	/ENTER NEW FILE
030324  0003		   ENTER
030325  0352	STBLK0,	   MULTI8	/POINTER TO FILENAME
030326  0000	TENTLN,	   0
030327  4563	ERR4,	JMS I [ERROR	/CAN'T CLOSE SAVE FILE
030330  1326		TAD TENTLN
030331  7100		CLL
030332  1342		TAD NEWLEN
030333  7630		SZL CLA		/IS THIS HOLE LARGE ENOUGH ?
030334  4563	ERR4A,	 JMS I [ERROR	/NO, NO ROOM FOR MULTI8.SV
030335  7301		AC0001
030336  6212		CIF 10
030337  4573		JMS I [7700
030340  0004		   CLOSE
030341  0352		   MULTI8
030342  0106	NEWLEN,	   SVLNGT
030343  4563	ERR4B,	 JMS I [ERROR
030344  1342		TAD NEWLEN
030345  7041		CIA
030346  3237		DCA LNGTH
030347  1325		TAD STBLK0
030350  3236		DCA STBLK
030351  5714		JMP I NEWSAV	/RETURN TO MAIN SAVE ROUTINE

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 175

		/DATA FOR SAVE ROUTINE:
		MULTI8,
		IFNDEF SINGL8 <
030352  1525		FILENAME MULTI8.SV	/ >
030353  1424
030354  1170
030355  2326
		IFDEF SINGL8 <
			FILENAME ZM16.SV	/ >

	0000	O1=0
030356  7774	CCB,	-FIELDS-1	/NUMBER OF SEGMENTS
030357  6233		CDF CIF BGFLD	/STARTING FIELD
030360  1000		STRT		/STARTING ADDRESS
030361  0000		0000		/JOB STATUS WORD
030362  0000	CCBLST,	0000		/SEGMENT FOR BGFLD
	3230		O=ENDPWR%2+BGFLD;O1=O+100%200+O1;O
	0015
030363  3230
		IFZERO FIELDS-7&4000 <
			0000		/SEGMENT FOR FIELD 6
			O=ENDF60%2+60;O1=O+100%200+O1;O	/ >
		IFZERO FIELDS-6&4000 <
			0000		/SEGMENT FOR FIELD 5
			O=ENDF50%2+50;O1=O+100%200+O1;O	/ >
		IFZERO FIELDS-5&4000 <
			0000		/SEGMENT FOR FIELD 4
			O=ENDF40%2+40;O1=O+100%200+O1;O	/ >
		IFZERO FIELDS-4&4000 <
			0000		/SEGMENT FOR FIELD 3
			O=ENDF30%2+30;O1=O+100%200+01;O	/ >
		IFZERO FIELDS-3&4000 <
030364  0000		0000		/SEGMENT FOR FIELD 2
	0120		O=ENDF20%2+20;O1=O+100%200+O1;O	/ >
	0016
030365  0120
030366  0000		0000		/SEGMENT FOR FIELD 1
	2110		O=ENDF10%2+10;O1=O+100%200+O1;O
	0027
030367  2110
030370  0000		0000		/SEGMENT FOR FIELD 0
	2300		O=ENDF00%2+00;O1=O+100%200+O1;O
	0041
030371  2300

		/THE REST OF THE FIRST BLOCK CONTAINS THE MAP OF THE FILE, E.G.
		/WHERE ALL TASKS IN THE TASKLIBRARY ARE STORED:
030372  0042	DSKMAP,	O1+1	/OFFSET TO FIRST TASK (OVER THE SAVE PART)
030373  0000		ZBLOCK CCB+400-. /GOOD FOR AT LEAST 235 BLOCKS
	0755	ENDMAP=.-1
	0016		O2=LOADPT-TCBTAB%10
	0064		O3=MAXNAM-O2^2
	0125		SVLNGT=O1+O3
		IFNZRO BGMAX <
030756  0000	COPDSK,	0		/SETUP DSKMAP

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 175-1

030757  1157		TAD [XDSKTAB-1	/COPY XDSKTAB TO DSKTAB
030760  3017		DCA AUTO17
030761  1156		TAD [DSKTAB-1
030762  3016		DCA AUTO16
030763  1155		TAD [-40
030764  3001		DCA TEMP1
030765  1417	DSKCO1,	TAD I AUTO17
030766  6211		CDF 10
030767  3416		DCA I AUTO16
030770  6231		CDF BGFLD
030771  2001		ISZ TEMP1
030772  5365		 JMP DSKCO1
030773  5756		JMP I COPDSK	/RETURN
	7600	DSKTAB=7600		/V7 NOW IN CD AREA, 17600 >


	1000	PAGE

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 176

		/*****************************************************************
		/********   T A S K B U I L D I N G   P H A S E   ****************
		/*****************************************************************

		/HERE STARTS THE TASKBUILDING PHASE:
031000  7240	STRT,	ACM1		/IF R MULTI8, SET SWITCH TO -1
031001  3026		DCA CHAIND	/IF CHAINED SET TO 0
031002  1177		TAD [NO		/SET NON-RESTATABLE BIT
031003  6201		CDF 0		//IN OS8 JOB STATUS WORD
031004  3576		DCA I [JSW	//
031005  6231		CDF BGFLD	/
031006  1166		TAD [MULTI8
031007  3214		DCA OFSET	/LOOKUP PRESENT SAVE FILE
031010  7301		AC0001		/SYS:=1
031011  6212		CIF 10
031012  4573		JMS I [7700	/CALL USR
031013  0002		   LOOKUP
031014  0352	OFSET,	   MULTI8	/POINTER TO FILENAME/ STARTBLOCK OF FILE
031015  0000	ACTLEN,	   0		/GET FILE LENGTH
031016  4563	ERR6,	 JMS I [ERROR	/?MULTI8.SV NOT ON SYS:?
031017  2026		ISZ CHAIND	/WAS IT A CHAIN ?
031020  5554		 JMP I [GO	/YES, START MULTI8 RIGHT AWAY
031021  6212	TKBNXT,	CIF 10		/CALL COMMAND DECODER
031022  4573		JMS I [7700	/
031023  0005		   CD
031024  0216		   0216		/DEFAULT EXTENSION FOR TASKS IS 'BN'
031025  4553		JMS I [TSKBLD	/TASKBUILD WHATEVER IS SPECIFIED
031026  6211		CDF 10		//LOOK AT ALTMODE FLAG
031027  1552		TAD I [7642	//
031030  6231		CDF BGFLD	/
031031  7700		SMA CLA		/FINISHED TASKBUILDING ?
031032  5221		 JMP TKBNXT	/NO, MORE EXPECTED
031033  4567		JMS I [SAVE	/SAVE UPDATED IMAGE WITH NEW TASKS
031034  6211		CDF 10
031035  1551		TAD I [7644
031036  6231		CDF BGFLD
031037  0150		AND [2000
031040  7650		SNA CLA		/ /N OPTION SET ?
031041  5554		 JMP I [GO	/NO, GO START MULTI8
031042  6203		CDF CIF 0
031043  5547		JMP I [7600	/YES, BACK TO OS/8

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 177

		/UPDATE BLOCK NUMBERS OF TASKS IN TASK CONTROL BLOCK TABLE:
031044  0000	SETBLK,	0		/ABSOLUTIZE BLOCKNUMBERS IN TCB'S
031045  6201		CDF 0		//
031046  1146		TAD [LOADPT+3	//START OF DISK RESIDENT TASKS
031047  3000	PWR1,	DCA TEMP
031050  1400		TAD I TEMP	//FETCH RELATIVE BLOCK NUMBER
031051  7450		SNA		//IF ZERO, W'RE PAST THE LAST ONE
031052  5262		 JMP PWR1A	//DONE
031053  6231		CDF BGFLD	/
031054  1214		TAD OFSET	/ADD STARTBLOCK OF MULTI8.SV
031055  6201		CDF 0		//
031056  3400		DCA I TEMP	//STORE UPDATED BLOCK NUMBER
031057  1000		TAD TEMP
031060  1145		TAD [10		//NEXT BLOCK # IS 10 WORDS FURTHER
031061  5247		JMP PWR1	//CYCLE
031062  6231	PWR1A,	CDF BGFLD	/
031063  5644		JMP I SETBLK	/RETURN

031064  0000	LNKTCB,	0		/LINK THE FREE TCB'S
031065  6201		CDF 0		//
031066  1544		TAD I [FHEAD	//ADDRESS OF FIRST FREE BLOCK
031067  3001	LNKTC1,	DCA TEMP1	//
	4561		O=MAXNAM^10+TCBTAB+200&7600-17
031070  1143		TAD [-O
031071  1001		TAD TEMP1
031072  7700		SMA CLA		//END OF TCBTAB ?
031073  5301		 JMP LNKTC2	//LAST TCB
031074  1001		TAD TEMP1	//
031075  1145		TAD [10		//COMPUTE ADDRESS OF NEXT BLOCK
031076  3401		DCA I TEMP1	//AND STORE IN LINK WORD
031077  1401		TAD I TEMP1
031100  5267		JMP LNKTC1	//NO, CYCLE
031101  3401	LNKTC2,	DCA I TEMP1	//WHICH GETS A ZERO LINK
031102  6231		CDF BGFLD	/
031103  5664		JMP I LNKTCB	/RETURN

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 178

		/LOOKUP THE SWAP-FILE 'SWPFIL.M8'
		IFNZRO BGMAX <
031104  0000	SETSWP,	0		/SETUP THE SWAPFILE
031105  7301		AC0001
031106  6212		CIF 10
031107  4573		JMS I [USR	/LOOKUP 'SWPFIL.M8' ON SYS:
031110  0002		   LOOKUP
031111  2227	SWBLOK,	   SWPFIL	/THIS GETS THE STARTING BLOCK #
031112  0000	SWPLEN,	   0		/THIS GETS MINUS THE LENGTH
031113  5331		 JMP NEWSWP	/NO SWAPFILE YET
031114  1311		TAD SWBLOK
031115  0142		AND [TRACK-1	/COMPUTE NUMBER OF EXTRA BLOCKS
031116  1312		TAD SWPLEN	/CHECK IF SWAPFILE LONG ENOUGH
		IFNDEF SINGL8 <
031117  1141		TAD [BGCORE^BGMAX^20 >
		IFDEF SINGL8 <
			TAD [BGCORE^BGMAX-BGFLDS+1^20 >
031120  7740		SMA SZA CLA
031121  5331		 JMP NEWSWP	/MUST MAKE A LONGER SWAPFILE
031122  1311	SWAP1,	TAD SWBLOK	/PUT BEGIN OF SWPFIL.M8 IN
031123  1142		TAD [TRACK-1
031124  0140		AND [-TRACK
031125  6211	SETSW1,	CDF 10		//
031126  3537		DCA I [BSTAB	//FIRST LOC OF BSTAB
031127  6231		CDF BGFLD	/
031130  5704		JMP I SETSWP	/RETURN

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 179

031131  7301	NEWSWP,	AC0001		/FIRST DELETE THE OLD SWPFIL
031132  6212		CIF 10		/
031133  4573		JMS I [USR	/
031134  0004		   CLOSE	/
031135  2227		   SWPFIL	/POINTER TO FILE NAME
031136  0000		   0		/LENGTH IS ZERO: DELETE FILE
031137  7000		 NOP		/MAYBE IT ISN'T THERE AT ALL
031140  7301		AC0001		/CREATE A NEW SWPFIL.M8
031141  6212		CIF 10		/
031142  4573		JMS I [USR	/
031143  0003		   ENTER	/ENTER THE NEW FILE
031144  2227		   SWPFIL	/POINTER TO FILENAME
031145  0000	NEWLNG,	   0		/GETS MAXIMUM LENGTH
031146  4563	ERR5,	 JMS I [ERROR	/?CAN'T ENTER SWPFIL.M8?
031147  1344		TAD NEWLNG-1	/GET STARTING BLOCK
031150  7041		CIA		/COMPUTE EXTRA BLOCKS TO ALLIGN WITH DISK
031151  0142		AND [TRACK-1	/COMPUTE NUMBER OF EXTRA BLOCKS
		IFNDEF SINGL8 <
031152  1141		TAD [BGCORE^BGMAX^20 >
		IFDEF SINGL8 <
			TAD [BGCORE^BGMAX-BGFLDS+1^20 >
031153  3366		DCA CLNGTH	/AND STORE IN CLOSE REQUEST
031154  7120		STL		/
031155  1366		TAD CLNGTH	/SEE IF THERE IS ENOUGH ROOM
031156  1345		TAD NEWLNG
031157  7660		SNL SZA CLA	/ENOUGH ?
031160  4563	ERR5B,	 JMS I [ERROR	/?NO ROOM FOR SWPFIL.M8?
031161  7301		AC0001
031162  6212		CIF 10		/NOW CLOSE THE FILE
031163  4573		JMS I [USR	/
031164  0004		   CLOSE
031165  2227		   SWPFIL
031166  0000	CLNGTH,	   0
031167  4563	ERR5A,	 JMS I [ERROR	/?CAN'T CLOSE SWPFIL.M8?
031170  1344		TAD NEWLNG-1	/GET STARTING BLOCK
031171  3311		DCA SWBLOK
031172  1366		TAD CLNGTH
031173  3312		DCA SWPLEN
031174  5322		JMP SWAP1	/CARRY ON >

	1200	PAGE

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 180

		IFNZRO BGMAX <
031200  2625	PTEMP1,	FAKHND
031201  4372	PTEMP2,	FAKSYS
031202  7644	PTEMP3,	-FAKLEN
031203  3062	PTEMP4,	BOBOOT
031204  3563	PTEMP5,	BOOBUF
031205  7340	PTEMP6,	-BOBOEND
031206  7752	PTEMP7,	BOBOEND-447-17
031207  2761	PTEMP8,	DEVLST
031210  7623	PTEMP9,	FASSGN
031211  4410	PTEMP0,	FASSGN+2-SYSHND+FAKSYS
031212  1712	PRBOOT,	RBOOT

031213  0000	SETFAK,	0		/ROUTINE TO SETUP FAKEHANDLER STUFF
031214  4612		JMS I PRBOOT	/READ BOOTSTRAP FROM OS8 DEV
031215  6212		CIF 10
031216  4573		JMS I [USR
031217  0010		   USRIN
		/MOVE FAKEHANDLER OVER SYSTEM-HANDLER
031220  1600	PWR4,	TAD I PTEMP1
031221  3601		DCA I PTEMP2
031222  2200		ISZ PTEMP1
031223  2201		ISZ PTEMP2
031224  2202		ISZ PTEMP3	/DONE ?
031225  5220		 JMP PWR4	/NO, CYCLE
031226  6201		CDF 0
031227  1536		TAD I [7777	/GET DATE EXTENSION BITS
031230  6231		CDF BGFLD
031231  0135		AND [4707
		IFNDEF SINGL8 <
031232  1134		TAD [BGFLDS-1^10+1000 /RTS8-BIT & SOFTWARE CORE SIZE >
		IFDEF SINGL8 <
			TAD [BGCORE-1^10+1000 /RTS8-BIT & SOFTWARE CORE SIZE >
031233  3533		DCA I [BGCORW	/CORE-SIZE SET INITIALLY AT #FLDS-FGRND
		/COPY SYSTEM BOOTSTRAP
031234  1603	PWR4A,	TAD I PTEMP4
031235  3604		DCA I PTEMP5
031236  2203		ISZ PTEMP4
031237  2204		ISZ PTEMP5
031240  2205		ISZ PTEMP6
031241  5234		 JMP PWR4A
		/CLEAR DEVICE RESIDENCY TABLE
031242  3604		DCA I PTEMP5
031243  2204		ISZ PTEMP5
031244  2206		ISZ PTEMP7
031245  5242		 JMP .-3

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 181

		/PUT FAKEHANDLER ENTRY POINTS IN DEVICE RESIDENCY TABLE
031246  1164		TAD [SYSHND
031247  3532		DCA I [DVRSTB	/ENTRYPOINT SYS:
031250  1164		TAD [SYSHND
031251  3531		DCA I [DVRSTB+1	/ENTRYPOINT DSK:
031252  5315		JMP PWR5B
031253  3263	PWR5,	DCA DEVNAM
031254  2207		ISZ PTEMP8
031255  1607		TAD I PTEMP8
031256  3264		DCA DEVNAM+1	/SECOND WORD OF DEVICE NAME
031257  2207		ISZ PTEMP8	/PTEMP8 POINTS TO DEVICE TYPE
031260  6212		CIF 10
031261  4574		JMS I [200
031262  0012		   INQUIRE	/ASK USR WHAT INTERNAL DEVICE # IT HAS
031263  0000	DEVNAM,	   ZBLOCK 3	/GETS DEVICE NAME
031266  5313		 JMP PWR5A	/DEVICE DOES NOT EXIST, THAT'S
					/A PITY FOR HIM
031267  1264		TAD DEVNAM+1	/THIS IS THE INTERNAL DEV NUMBER NOW
031270  1130		TAD [DVRSTB-1	/INDEX IN DEVICE RESIDENCY TABLE
					/(THE ONE THAT IS IN THE BOOTBUFFER)
031271  3002		DCA TEMP2
031272  1210		TAD PTEMP9	/GET NEXT ENTRYPOINT IN FAKEHANDLER
031273  3402		DCA I TEMP2	/AND DROP IN DEVICE RESIDENCY TABLE.
					/SO OS/8 WILL THINK THE HANDLER IS
031274  1264		TAD DEVNAM+1	/CORESIDENT WITH SYS:
031275  1127		TAD [DVTYPT-1
031276  3002		DCA TEMP2
031277  1607		TAD I PTEMP8
031300  3402		DCA I TEMP2	/SET CORRECT DEVICE TYPE
031301  2207		ISZ PTEMP8	/POINTS TO FAKEHANDLER CODE NUMBER
031302  1607		TAD I PTEMP8	/GET CODE NUMBER
031303  3611		DCA I PTEMP0	/AND STORE IN FAKEHANDLER
031304  7325		AC0003		/ADVANCE POINTERS
031305  1210		TAD PTEMP9
031306  3210		DCA PTEMP9
031307  7325		AC0003
031310  1211		TAD PTEMP0
031311  3211		DCA PTEMP0
031312  7410		SKP
031313  2207	PWR5A,	ISZ PTEMP8
031314  2207		ISZ PTEMP8
031315  1607	PWR5B,	TAD I PTEMP8
031316  7440		SZA		/DONE ?
031317  5253		 JMP PWR5	/NO, CYCLE

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 182

031320  6212		CIF 10
031321  4574		JMS I [200
031322  0011		   USROUT	/DISMISS USR
031323  6202		CIF 0
031324  4564		JMS I [SYSHND
031325  4430		   4400+BGFLD	/WRITE THE FAKED BOOTBLOK IN BLOCK 40
031326  3563		   BOOBUF
031327  0040		   40		/OS/8 SCRATCH BLOCK
031330  4563	ERR8,	 JMS I [ERROR	/?WRITING BOOBLK.M8?
031331  7200		CLA		/YES
031332  5613		JMP I SETFAK	/RETURN

	1400	PAGE			/ >

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 183

		/NOW WE SETUP THE FOREGROUND PAGE 0'S
031400  0000	COPYZ,	0		/SETUP FOREGROUND FIELDS PAGE ZERO
031401  1126		TAD [-FIELDS+1
031402  3001		DCA TEMP1	/COUNTER
031403  1125	PWR8,	TAD [-COMPNT
031404  3002		DCA TEMP2	/COUNTER
031405  3003		DCA TEMP3	/POINTER STARTS AT ZERO
031406  6201	PWR9,	CDF 00
031407  1403		TAD I TEMP3	/GET A WORD FROM 00
031410  6211	PWR10,	CDF 00+10
031411  3403		DCA I TEMP3	/PUT A WORD INTO ANOTHER FIELD
031412  2003		ISZ TEMP3	/BUMP THE POINTER
031413  2002		ISZ TEMP2	/200 DONE ?
031414  5206		 JMP PWR9	/NO, CYCLE
031415  1210		TAD PWR10
031416  3524		DCA I [MYCDF
031417  7301		AC0001
031420  1210		TAD PWR10
031421  3523		DCA I [MYCIF
031422  7326		AC0002
031423  1210		TAD PWR10
031424  3522		DCA I [MYCDIF
031425  1210		TAD PWR10
031426  1145		TAD [10
031427  3210		DCA PWR10
031430  2001		ISZ TEMP1
031431  5203		 JMP PWR8	/NEXT FIELD
031432  6231		CDF BGFLD
031433  5600		JMP I COPYZ	/RETURN

		/FILL IN CLRTAB WITH THE ORIGINAL CLEAR-IOT'S FROM THE SKIPCHAIN
031434  0000	COPCLR,	0		/SETUP CLRTAB
031435  6201		CDF 00
031436  1121		TAD [-INTDEV+1
031437  3022		DCA ZTEM2	/WE MAY USE THE ZTEM'S NOW!
031440  1120		TAD [CLRTAB-1
031441  3010		DCA AUTO10
031442  1117		TAD [SKP0-1+4
031443  3021	PWR12,	DCA ZTEM1
031444  1421		TAD I ZTEM1
031445  3410		DCA I AUTO10
031446  1021		TAD ZTEM1
031447  1116		TAD [4
031450  2022		ISZ ZTEM2
031451  5243		 JMP PWR12
031452  6231		CDF BGFLD
031453  7300		CLA CLL
031454  5634		JMP I COPCLR

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 184

		IFNZRO BGMAX <
		/CALL: 	JMS SETLEN
		/	   PROG NAME POINTER
		/	   BLOCK OFFSET
		/	   - TEST VALUE OF 1'ST WORD
		/	   ADDRESS OFFSET	/MAY RETURN THRU
		/	   TABLE INCREMENT	/THESE TWO

031455  0000	SETLEN,	0		/PATCH PROGRAM DEVICE LENGTH TABLE
031456  1655		TAD I SETLEN
031457  3265		DCA PRGBLK	/SET NAME POINTER
031460  2255		ISZ SETLEN	/NEXT ARG
031461  7301		AC0001		/PROG.SV IS ON SYS: USUALLY
031462  6212		CIF 10
031463  4777		JMS I (USR	/LOOKUP PROG.SV
031464  0002		   LOOKUP
031465  1234	PRGBLK,	   1234
031466  0000		   0		/(GETS -LENGTH OF PROG.SV)
031467  5343		 JMP SETEX1	/SORRY, PROG NOT FOUND
031470  7307		AC0004		/PROG MUST BE 4 BLOCKS AT LEAST
031471  1266		TAD PRGBLK+1	/GET -LENGTH OF PROG.SV
031472  7700		SMA CLA		/OK ?
031473  5343		 JMP SETEX1	/NO, MAYBE IT'S A SHSAVE FILE
031474  1655		TAD I SETLEN	/GET BLOCK OFFSET
031475  2255		ISZ SETLEN
031476  1265		TAD PRGBLK
031477  3306		DCA PRGB1
031500  1306		TAD PRGB1
031501  3340		DCA PRGB2
031502  6202		CIF 0
031503  4776		JMS I (SYSHND
031504  0230		   200+BGFLD	/READ 1 BLOCK IN THIS FIELD
031505  5600	PRGBUF,	   BUFST	/USE INPUT BUFFER OF TSKBLD
031506  0000	PRGB1,	   0		/GETS BLOCK NUMBER
031507  5344		 JMP SETEX2	/SORRY, YOUR PROG IS POOH
031510  1655		TAD I SETLEN	/GET TEST VALUE
031511  2255		ISZ SETLEN
031512  1705		TAD I PRGBUF	/TEST FIRST VALUE OF BUFFER
031513  7640		SZA CLA		/OK?
031514  5345		 JMP SETEX	/NO, BAD VERSION: FALL THRU ARGS
031515  1375		TAD (-10
031516  3306		DCA PRGB1	/FOR A COUNTER
031517  1374		TAD (LNGLST-1-BGNUMB+BOBOOT
031520  3010		DCA AUTO10	/RELOCATED IN BOOT BLOCK
031521  1655		TAD I SETLEN	/GET ADDRESS OFFSET
031522  2255		ISZ SETLEN
031523  1373		TAD (BUFST
031524  3265		DCA PRGBLK
031525  1410	PRGLOP,	TAD I AUTO10
031526  3665		DCA I PRGBLK
031527  1655		TAD I SETLEN	/ADD INCREMENT
031530  1265		TAD PRGBLK
031531  3265		DCA PRGBLK
031532  2306		ISZ PRGB1
031533  5325		 JMP PRGLOP	/ENTER DEVICE LENGTH FOR DEV 50-57

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 184-1

031534  6202		CIF 0
031535  4776		JMS I (SYSHND	/AND WRITE IT BACK TO PROG
031536  4230		   4200+BGFLD
031537  5600		   BUFST
031540  0000	PRGB2,	   0
031541  5345		 JMP SETEX	/WRITE ERROR ? PITY
031542  5345		JMP SETEX
031543  2255	SETEX1,	ISZ SETLEN
031544  2255	SETEX2,	ISZ SETLEN
031545  7200	SETEX,	CLA
031546  5655		JMP I SETLEN	/RETURN >

031573  5600
031574  3062
031575  7770
031576  7607
031577  7700
	1600	PAGE

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 185

		GO,
031600  4777	IFNZRO BGMAX <JMS I (SETPIP /PATCH PIP DEVICE LENGTH TABLE >
031601  4776		JMS I (SETDMP	/SETUP TO RUN MONDUM @ 7757
031602  4775		JMS I (PDPTST	/CHECK THE AVAILABLE HARDWARE
		IFNZRO BGMAX <
031603  4774		JMS I (SETSWP	/CREATE SWAPFILE
031604  4773		JMS I (SETMEM	/SETUP BSTAB FOR AVAILABLE MEMORY
031605  4772		JMS I (SETFAK	/SETUP FAKE HANDLER
031606  4771		JMS I (COPDSK	/SETUP DSKTAB >
031607  4770		JMS I (SETBLK	/RELOCATE TASK BLOCK NUMBERS
031610  4767		JMS I (COPCLR	/COPY CLEARIOTS IN CLRTAB
031611  4766	IFNZRO BGMAX <JMS I (SETTRP /SETUP THE MMU >
		/NOW COMES A DIRTY PIECE OF CODE, THAT INITIALIZES ALL SORTS
		/OF PERIPHERALS; MAYBE YOU HAVE TO EDIT THIS PART FOR YOUR
		/SPECIALTIES !
031612  6007			CAF
031613  6046			TLS	/THATS AN EASY ONE
		IFDEF KL8E2 <	6016+KL8E2	/ >
		IFDEF KL8E3 <	6016+KL8E3	/ >
		IFDEF KL8E4 <	6016+KL8E4	/ >
		IFDEF KL8E5 <	6016+KL8E5	/ >
		IFDEF KL8E6 <	6016+KL8E6	/ >
		IFDEF KL8E7 <	6016+KL8E7	/ >
031614  7200			CLA
		IFDEF PP8E <	6024	/ >
		IFDEF LE8E <
		IFZERO LE8E&1 <	6666	/ >
031615  6574	IFNZRO LE8E&1 < 6574	/ >>
		IFDEF DR8EA1 <DR8EA1+6000	/DISABLE INTERRUPTS >
		IFDEF DR8EA2 <DR8EA2+6000	/DISABLE INTERRUPTS >
		IFDEF KL8A1 <
			KL8A1+6010
			TAD (KL8TAB
			KL8A1+6012
			AC0001
			KL8A1+6000	/ >
		IFDEF KL8A2 <
			KL8A2+6010
			TAD (KL8TAB+10
			KL8A2+6012
			AC0001
			KL8A2+6000	/ >

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 186

		/STARTING THE CLOCKS:
		IFDEF RFCLOCK <	6601
				TAD (RFINTS
				6615	/ >
		IFDEF DK8EA <	DK8EA+6001	/ >
		IFDEF DK8EB <	DK8EB+6003	/ >
		IFDEF DK8EC <	DK8EC+6001	/ >
		IFDEF DK8EP < 
		IFNDEF DK8EA < IFNDEF DK8EB < IFNDEF DK8EC < IFNDEF DKC8AA <
031616  1365			TAD (-1750
031617  6133			6003+DK8EP	/AC IS NOT CLEARED, BUT ...
031620  1115			TAD [5410+1750
031621  6132			6002+DK8EP
031622  7200			CLA	/ >>>>>
		IFDEF DKC8AA <	AC0001
				6135
				CLA		/ >
		IFDEF AX08 <	6364
				ISZ .-1
				JMP .-1
				6362		/CLEAR ADC DONE FLAG
				CLA		/? >
		IFDEF FPP <
				AC2000		/SEE IF M&S FPP INSTALLED
				6144		/SEMO DP AS TRIAL
				SNA CLA		/DID IT CLEAR AC ?
				 JMP .+5	/YES, OK
				TAD (FPICL+2&177+5200	/NO, DO 'JMP FPICL+2' SO THAT
				CDF 10
				DCA I (FPST+2	/FPSTART DOES NOT SKIP, BUT 'JMP EMREDY'
				CDF BGFLD	/ >

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 187

		/NOW WE WILL SCHEDULE THE AUTO-START TASKS TO GET THE WORLD
		/GOING. BECAUSE THIS POWERUP CODE IS NOT IN A
		/FOREGROUND FIELD, WE CAN'T SIMULATE IT TO BE A TASK,
		/THAT CALLS THE OTHER TASKS. THUS WE MUST STRING THEM
		/IN THE SYSTEM'S QUEUE'S AND SET THEIR BACKLINK BUSY
		/'BY HAND'.

031623  1114		TAD [TCBTAB+1	/LOOK FOR EACH TASKS' THREAD IN
031624  3001		DCA TEMP1	/HIS TCBP. IF NONZERO HE MUST BE STARTED
031625  1113		TAD [-MAXNAM
031626  3022		DCA TEMP7	/COUNTER
031627  6201	PWR14,	CDF 0
031630  1401		TAD I TEMP1
031631  7650		SNA CLA		/AUTO-START ?
031632  5256		 JMP PWR15	/NO TRY NEXT ONE
031633  7240		ACM1
031634  1001		TAD TEMP1
031635  3002		DCA TEMP2
031636  7301		AC0001
031637  3402		DCA I TEMP2	/SET HIS BACKLINK TO 'RUNNED'
031640  1512		TAD I [MTAIL	/PUT HIM ON THE MAINQUEUE
031641  3002		DCA TEMP2
031642  1001		TAD TEMP1
031643  3402		DCA I TEMP2
031644  1001		TAD TEMP1
031645  3512		DCA I [MTAIL
031646  3401		DCA I TEMP1
031647  2001		ISZ TEMP1
031650  1001		TAD TEMP1
031651  1111		TAD [5
031652  3002		DCA TEMP2	/ADDRESS OF PC
031653  1401		TAD I TEMP1	/GET HIS START ADDRESS
031654  3402		DCA I TEMP2	/AND DROP IT INTO HIS PC
031655  7240		ACM1
031656  1001	PWR15,	TAD TEMP1	/GET POINTER AND
031657  1145		TAD [10
031660  3001		DCA TEMP1	/ADVANCE TO NEXT THREAD
031661  2022		ISZ TEMP7	/ALL TASKS DONE ?
031662  5227		 JMP PWR14	/NO
031663  6203		CDF CIF 00
031664  5510		JMP I [DISPATCH	/...............

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 188

		IFNZRO BGMAX <
031665  0000	SETTRP,	0		/SETUP THE TRAP/UNTRAP RAM
031666  1173		TAD [-100
031667  3021		DCA ZTEM1
031670  1107		TAD [6000
031671  3022		DCA ZTEM2
031672  1022		TAD ZTEM2
031673  6235		6235		/LOAD TRAP REGISTER, CLA
031674  1022		TAD ZTEM2
031675  1145		TAD [10
031676  2021		ISZ ZTEM1
031677  5271		 JMP .-6
031700  7200		CLA
031701  1106		TAD [TRPTAB-1
031702  3010		DCA AUTO10
031703  1410		TAD I AUTO10
031704  7450		SNA
031705  5310		 JMP .+3
031706  6235		6235		/LOAD TRAP REGISTER, CLA
031707  5303		JMP .-4
031710  6265		6265		/ENABLE MEMORY MANAGEMENT !
031711  5665		JMP I SETTRP	/RETURN

031712  0000	RBOOT,	0		/READ BOOTSTRAP
031713  6202		CIF 0
031714  4564		JMS I [SYSHND
031715  0230		   200+BGFLD
031716  4163		   BOOBUF+400
031717  0000		   0
031720  5334		 JMP ERR2
031721  6201		CDF 0
031722  7346		AC7775
031723  1736		TAD I P7612	/TEST IF 2 PAGE SYS HANDLER
031724  6231		CDF BGFLD	
031725  7640		SZA CLA
031726  5712		 JMP I RBOOT	/IT WAS'NT
031727  6202		CIF 0
031730  4564		JMS I [SYSHND	/IT WAS, READ 17600 PART
031731  0130		   100+BGFLD
031732  4163		   BOOBUF+400
031733  0066		   66		/FROM BLOCK 66
031734  4563	ERR2,	 JMS I [ERROR	/?READING BLOCK 0 (OR 66)?
031735  5712		JMP I RBOOT
031736  7612	P7612,	7612		>

031765  6030
031766  1665
031767  1434
031770  1044
031771  0756
031772  1213
031773  2035
031774  1104
031775  2065
031776  2000

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 188-1

031777  2200
	2000	PAGE

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 189

032000  0000	SETDMP,	0		/SETUP .R MONDUM
032001  7301		AC0001
032002  6212		CIF 10
032003  4573		JMS I [USR	/LOOKUP MONDUM.SV
032004  0002		   LOOKUP
032005  2031	DMPBLK,	   MONDUM
032006  0000		   0
032007  5600		 JMP I SETDMP	/MONDUM.SV NOT FOUND
032010  1105		TAD [CIF CDF BGFLD /RUN MONDUM IN FIRST BG FIELD
032011  6201		CDF 0
		IFNZRO OS8-40 <
			DCA I [7772	/STARTING FIELD >
		IFZERO OS8-40 <
032012  3504		DCA I [7773	/STARTING FIELD V40 >
032013  1103		TAD [201	/MONDUM CHAIN ADDRESS
032014  3521		DCA I [7775
032015  1205		TAD DMPBLK
032016  7001		IAC
032017  3502		DCA I [7762	/BLOCK NUMBER
032020  3501		DCA I [7761
032021  1100		TAD [1000+BGFLD
032022  3540		DCA I [7760	/FUNCTION WORD [READ 10 PAGES)
032023  1077		TAD [5372
032024  3476		DCA I [7764
032025  1164		TAD [SYSHND
032026  3475		DCA I [7756
032027  6231		CDF BGFLD
032030  5600		JMP I SETDMP

032031  1517	MONDUM,	FILENAME MONDUM.SV
032032  1604
032033  2515
032034  2326

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 190

		IFNZRO BGMAX <
		/ROUTINE TO ENABLE MEMORY FIELDS THAT SEEM TO BE PRESENT IN
		/THIS MACHINE.
032035  0000	SETMEM,	0
032036  1074		TAD [-BGFLDS+1
032037  3000		DCA TEMP	/COUNT FIELD BGFLD+1 ... 7
032040  1073		TAD [CDF BGFLD+10
032041  3244		DCA SETMM1	/CDF TO FIRST FIELD TO TEST
032042  1072		TAD [BSTAB+1+1
032043  3001		DCA TEMP1	/POINTER TO CORRESPONDING BSTAB ENTRY
032044  6201	SETMM1,	CDF
032045  1245		TAD .		/THERE IT IS AGAIN, LARY
032046  3544		DCA I [FHEAD	/SOME PAGE ZERO LOCATION
032047  1544		TAD I [FHEAD
032050  6211		CDF 10
032051  7650		SNA CLA
032052  7240		ACM1		/LOCK BAD FIELDS
032053  7440		SZA
032054  3401		DCA I TEMP1	/
032055  2001		ISZ TEMP1
032056  1244		TAD SETMM1
032057  1145		TAD [10
032060  3244		DCA SETMM1	/NEXT FIELD
032061  2000		ISZ TEMP	/ALL DONE ?
032062  5244		 JMP SETMM1	/NO, CONTINUE
032063  6231		CDF BGFLD	/YES, RETURN
032064  5635		JMP I SETMEM	/ >

032065  0000	PDPTST,	0		/A SUBROUTINE THAT TESTS IF WE ARE
032066  7300		CLA CLL		/AT A REASONABLE KIND OF MACHINE.
		/TEST IF WE WORK IN THE BACKGROUND. (6254 ONLY FOR MULTI8)
032067  6042		TCF
032070  6041		TSF
032071  7410		SKP
032072  4563	ERR0,	 JMS I [ERROR	/?VIRTUIAL MACHINE?
		IFNZRO BGMAX <
032073  6225		6225		/SKIP IF MEMORY MANAGEMENT INSTALLED
032074  4563	ERR7,	 JMS I [ERROR	/*?MEMORY MANAGEMENT?* >
032075  5665		JMP I PDPTST

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 191

032076  0000	ERROR,	0		/GENERAL ERROR MESSAGE HANDLER
032077  7300		CLA CLL
032100  6231		CDF BGFLD	/YOU NEVER KNOW
032101  1071		TAD [ERRLST-1
032102  3010		DCA AUTO10
032103  1276		TAD ERROR
032104  7041		CIA
032105  7001		IAC
032106  3276		DCA ERROR
032107  1410	ERRLOP,	TAD I AUTO10
032110  7440		SZA		/TEST FOR END OF LIST
032111  1276		TAD ERROR
032112  7650		SNA CLA
032113  5317		 JMP ERRFND	/THIS MUST BE THE ERROR
032114  2010		ISZ AUTO10
032115  2010		ISZ AUTO10
032116  5307		JMP ERRLOP

032117  1410	ERRFND,	TAD I AUTO10
032120  3322		DCA .+2
032121  4327		JMS TXTOUT	/PRINT THE MESSAGE
032122  0000		   0
032123  4362		JMS CRLF
032124  1410		TAD I AUTO10
032125  3276		DCA ERROR
032126  5676		JMP I ERROR	/GO TO CONTINUATION ADDRESS

032127  0000	TXTOUT,	0
032130  7300		CLA CLL
032131  6231		CDF BGFLD
032132  1727		TAD I TXTOUT	/GET POINTER TO STRING
032133  3353		DCA TXTPNT
032134  2327		ISZ TXTOUT
032135  1753	TXT1,	TAD I TXTPNT
032136  7420		SNL
032137  7002		 BSW
032140  0070		AND [77
032141  7450		SNA		/END OF STRING ?
032142  5727		 JMP I TXTOUT	/YES, QUIT
032143  1067		TAD [240
032144  0070		AND [77
032145  1067		TAD [240
032146  4354		JMS OUT
032147  7020		CML
032150  7420		SNL
032151  2353		 ISZ TXTPNT
032152  5335		JMP TXT1

032153  0000	TXTPNT,	0

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 192

032154  0000	OUT,	0
032155  6046		TLS
032156  6041		TSF
032157  5356		JMP .-1
032160  7200		CLA
032161  5754		JMP I OUT

032162  0000	CRLF,	0
032163  1066		TAD [215
032164  4354		JMS OUT
032165  1065		TAD [212
032166  4354		JMS OUT
032167  5762		JMP I CRLF
	2200		PAGE

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 193

		IFNZRO BGMAX <
032200  0000	SETPIP,	0
032201  4616		JMS I PSETL	/SET LENGHTS IN PIP
032202  2217		   PIPNAM
032203  0004		   4		/BLOCK 4
032204  7010		   -770		/TEST
032205  0250		   50+200	/ADDRESS
032206  0001		   1		/INCREMENT
032207  4616		JMS I PSETL	/SET LENGTHS IN RESORC
032210  2223		   RESNAM
032211  0007		   7
032212  5354		   -2424
032213  0242		   50^4+2
032214  0004		   4
032215  5600		JMP I SETPIP
032216  1455	PSETL,	SETLEN
032217  2011	PIPNAM,	FILENAME PIP.SV
032220  2000
032221  0000
032222  2326
032223  2205	RESNAM,	FILENAME RESORC.SV / >
032224  2317
032225  2203
032226  2326
032227  2327	SWPFIL,	FILENAME SWPFIL.M8
032230  2006
032231  1114
032232  1570

032233  6203	E,	CDF CIF 0
032234  5547		JMP I [7600

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 194

		ERRLST,	/LIST OF ERROR ADRESSES, STRING POINTERS AND CONTINUATION
			/ADDRESSES:
032235  2072	ERR0;MSG0;E
032236  2353
032237  2233
		IFNZRO BGMAX <
032240  1734	ERR2;MSG2;E >
032241  2364
032242  2233
032243  0256	ERR3;MSG3;E
032244  2401
032245  2233
032246  0300	ERR3A;MSG3;E
032247  2401
032250  2233
032251  0327	ERR4;MSG4;E
032252  2411
032253  2233
032254  0334	ERR4A;MSG4;E
032255  2411
032256  2233
		IFNZRO BGMAX <
032257  1146	ERR5;MSG5;E
032260  2425
032261  2233
032262  1167	ERR5A;MSG5;E
032263  2425
032264  2233
032265  1160	ERR5B;MSG5;E >
032266  2425
032267  2233
032270  1016	ERR6;MSG6;E
032271  2441
032272  2233
		IFNZRO BGMAX <
032273  2074	ERR7;MSG7;E
032274  2455
032275  2233
032276  1330	ERR8;MSG8;E >
032277  2401
032300  2233
032301  5421	ERR9;MSG9;E
032302  2467
032303  2233
032304  5440	ERR10;MSG10;E
032305  2503
032306  2233
032307  4652	ERR21;MSG21;E
032310  2512
032311  2233
032312  4657	ERR21A;MSG21;E
032313  2512
032314  2233
032315  4664	ERR21B;MSG21;E
032316  2512

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 194-1

032317  2233
032320  5250	ERR22;MSG22;E
032321  2523
032322  2233
032323  5132	ERR23;MSG23;E
032324  2532
032325  2233
032326  0315	ERR23A;MSG23;E
032327  2532
032330  2233
032331  4673	ERR25;MSG25;E
032332  2545
032333  2233
032334  4731	ERR26;MSG26;E
032335  2553
032336  2233
032337  4766	ERR27;MSG27;E
032340  2562
032341  2233
032342  4751	ERR28;MSG28;E
032343  2574
032344  2233
032345  5147	ERR29;MSG29;E
032346  2605
032347  2233
		/END OF ERROR LIST:
032350  0000	0;MSG99;E
032351  2614
032352  2233

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 195

032353  7726	MSG0,	TEXT	*?VIRTUAL MACHINE?*
032354  1122
032355  2425
032356  0114
032357  4015
032360  0103
032361  1011
032362  1605
032363  7700
032364  7722	MSG2,	TEXT	*?READING BLOCK 0 (OR 66)?*
032365  0501
032366  0411
032367  1607
032370  4002
032371  1417
032372  0313
032373  4060
032374  4050
032375  1722
032376  4066
032377  6651
032400  7700
		MSG8,
		MSG11,
032401  7727	MSG3,	TEXT	*?WRITING SYS:?*
032402  2211
032403  2411
032404  1607
032405  4023
032406  3123
032407  7277
032410  0000
032411  7716	MSG4,	TEXT	*?NO ROOM FOR MULTI8.SV?*
032412  1740
032413  2217
032414  1715
032415  4006
032416  1722
032417  4015
032420  2514
032421  2411
032422  7056
032423  2326
032424  7700
032425  7716	MSG5,	TEXT *?NO ROOM FOR SWPFIL.M8?*
032426  1740
032427  2217
032430  1715
032431  4006
032432  1722
032433  4023
032434  2720
032435  0611
032436  1456
032437  1570

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 195-1

032440  7700
		MSG6,
		IFNDEF SINGL8 <
032441  7715		TEXT	*?MULTI8.SV NOT ON SYS:?*	 / >
032442  2514
032443  2411
032444  7056
032445  2326
032446  4016
032447  1724
032450  4017
032451  1640
032452  2331
032453  2372
032454  7700
		IFDEF SINGL8 <
			TEXT	*?ZM16.SV NOT ON SYS:?*	/ >

032455  7715	MSG7,	TEXT	*?MEMORY MANAGEMENT?*
032456  0515
032457  1722
032460  3140
032461  1501
032462  1601
032463  0705
032464  1505
032465  1624
032466  7700
032467  7716	MSG9,	TEXT	*?NON-RESIDENT HANDLER?*
032470  1716
032471  5522
032472  0523
032473  1104
032474  0516
032475  2440
032476  1001
032477  1604
032500  1405
032501  2277
032502  0000
032503  7722	MSG10,	TEXT	*?READ ERROR?*
032504  0501
032505  0440
032506  0522
032507  2217
032510  2277
032511  0000
032512  7720	MSG21,	TEXT *?PREAMBLE ERROR?*
032513  2205
032514  0115
032515  0214
032516  0540
032517  0522
032520  2217
032521  2277

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 195-2

032522  0000
032523  7702	MSG22,	TEXT *?BAD BINARY?*
032524  0104
032525  4002
032526  1116
032527  0122
032530  3177
032531  0000
032532  7715	MSG23,	TEXT *?MULTI8.SV TOO SHORT?*
032533  2514
032534  2411
032535  7056
032536  2326
032537  4024
032540  1717
032541  4023
032542  1017
032543  2224
032544  7700
032545  7703	MSG25,	TEXT *?CHECKSUM?*
032546  1005
032547  0313
032550  2325
032551  1577
032552  0000
032553  7724	MSG26,	TEXT *?TASK LENGTH?*
032554  0123
032555  1340
032556  1405
032557  1607
032560  2410
032561  7700
032562  7724	MSG27,	TEXT *?TASK LIBRARY FULL?*
032563  0123
032564  1340
032565  1411
032566  0222
032567  0122
032570  3140
032571  0625
032572  1414
032573  7700
032574  7716	MSG28,	TEXT *?NAME LIST FULL?*
032575  0115
032576  0540
032577  1411
032600  2324
032601  4006
032602  2514
032603  1477
032604  0000
032605  7727	MSG29,	TEXT *?WRITE ERROR?*
032606  2211
032607  2405
032610  4005

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 195-3

032611  2222
032612  1722
032613  7700
032614  7725	MSG99,	TEXT *?UNDEFINED ERROR?*
032615  1604
032616  0506
032617  1116
032620  0504
032621  4005
032622  2222
032623  1722
032624  7700

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 196

	0015		FAKVER="M&77
		IFNZRO BGMAX <
	7607	FAKHND,	RELOC SYSHND
037607* 0015	FSYS,	FAKVER		/ENTRY SYSTEM HANDLER
037610* 4270		JMS FGENIO
037611* 0000		   00		/AC-CODE^10+UNIT BITS
037612* 0015		FAKVER
037613* 4270		JMS FGENIO
037614* 0001		   01
037615* 0015		FAKVER
037616* 4270		JMS FGENIO
037617* 0002		   02
037620* 0015		FAKVER
037621* 4270		JMS FGENIO
037622* 0003		   03
037623* 0015	FASSGN,	FAKVER
037624* 4270		JMS FGENIO
037625* 0000		   0
037626* 0015		FAKVER
037627* 4270		JMS FGENIO
037630* 0000		   0
037631* 0015		FAKVER
037632* 4270		JMS FGENIO
037633* 0000		   0
037634* 0015		FAKVER
037635* 4270		JMS FGENIO
037636* 0000		   0
037637* 0015		FAKVER
037640* 4270		JMS FGENIO
037641* 0000		   0
037642* 0015		FAKVER
037643* 4270		JMS FGENIO
037644* 0000		   0
037645* 0015		FAKVER
037646* 4270		JMS FGENIO
037647* 0000		   0
037650* 0015		FAKVER
037651* 4270		JMS FGENIO
037652* 0000		   0
037653* 0015		FAKVER
037654* 4270		JMS FGENIO
037655* 0000		   0
037656* 0015		FAKVER
037657* 4270		JMS FGENIO
037660* 0000		   0
037661* 0015		FAKVER
037662* 4270		JMS FGENIO
037663* 0000		   0
037664* 0015		FAKVER
037665* 4270		JMS FGENIO
037666* 0000		   0

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 197

		M8BITS,	IFNZRO .-7667 <XERROR> /SOME OPTION BITS THAT BG PROGRAMS MAY
						/WANT TO KNOW.
	0000		O=0
	4000	IFDEF DKUSED <O=O+4000	/BIT 0 IS DKUSED >
		IFDEF SINGL8 <O=O+2000	/BIT 1 SHOWS SINGL8 >
		IFDEF UBITS <O=UBITS&77+O /FREE BITS FOR USER APPLICATIONS:
					/EG. SPECIFY ONE OF SEVERAL INSTALLATIONS >
037667* 4000		O		/THERE WE ARE !
037670* 0000	FGENIO,	0		/SETUP DTV,ISUE 6000
037671* 7344		ACM2
037672* 1270		TAD FGENIO	/AC POINTS TO ENTRY OF HANDLER
037673* 1340		TAD F1400	/FORM TAD FSYS, TAD FDTA0,...
037674* 3275		DCA FGTMP	/EXECUTE INLINE
037675* 0000	FGTMP,	0		/INSTRUCTION OR POINTER
037676* 3275		DCA FGTMP	/FGTMP IS MOVED ENTRY NOW
037677* 1675		TAD I FGTMP	/GET FUNCTION
037700* 2275		ISZ FGTMP
037701* 3330		DCA FUNC	/FIRST WORD OF DTV
037702* 1675		TAD I FGTMP	/GET CORE ADDRESS
037703* 2275		ISZ FGTMP
037704* 3331		DCA FUNC+1
037705* 1675		TAD I FGTMP	/GET BLOCK
037706* 2275		ISZ FGTMP
037707* 3332		DCA FUNC+2
037710* 6214		RDF		/SET RETURN FIELD
037711* 6201		CDF 0
037712* 1337		TAD FCDIF
037713* 3335		DCA FEXIT
037714* 1670		TAD I FGENIO
037715* 0342		AND F0076	/
037716* 7640		SZA CLA		/SYS: OR DSK0: ?
037717* 6031		 KSF		/FLAG UP ?
037720* 5325		 JMP FGNOSYS	/NO, DON'T TEST
037721* 6034		KRS		/YES
037722* 1341		TAD FM203	/TYPED ^C ?
037723* 7650		SNA CLA
037724* 5200		 JMP 7600	/YES, NO TRANSFER
037725* 1670	FGNOSYS,TAD I FGENIO	/GET UNIT+FUNCTION
037726* 6000		   6000		/THE REST IS NOT OUR BISNESS
037727* 5333		JMP .+4		/SKIP THE PARAMETER WORDS
037730* 0000	FUNC,	   ZBLOCK 3	/THE 3 PARAMETERS
037733* 7450		SNA		/ERROR ?
037734* 2275		 ISZ FGTMP	/NORMAL RETURN
037735* 6203	FEXIT,	CDF CIF		/CDF CIF RETURN
037736* 5675		JMP I FGTMP	/RETURN

037737* 6203	FCDIF,	CIF CDF 0
037740* 1400	F1400,	1400
037741* 7575	FM203,	-203
037742* 0076	F0076,	0076

	0134	FAKLEN=.-SYSHND	/LENGTH OF FAKEHANDLER CODE
		IFNZRO 7743-.&4000 <FAKERR,XERROR>

	2761		RELOC

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 198

		DEVLST,
		IFDEF TC08 <TAPEDCB=4160>
	4210	IFDEF TD8E <TAPEDCB=4210>
		IFDEF TAPE <
032761  0424		DEVICE DTA0;TAPEDCB;DTACHN+0
032762  0160
032763  4210
032764  0020
032765  0424		DEVICE DTA1;TAPEDCB;DTACHN+1
032766  0161
032767  4210
032770  0021
032771  0424		DEVICE DTA2;TAPEDCB;DTACHN+2
032772  0162
032773  4210
032774  0022
032775  0424		DEVICE DTA3;TAPEDCB;DTACHN+3
032776  0163
032777  4210
033000  0023
033001  0424		DEVICE DTA4;TAPEDCB;DTACHN+4
033002  0164
033003  4210
033004  0024
033005  0424		DEVICE DTA5;TAPEDCB;DTACHN+5
033006  0165
033007  4210
033010  0025
033011  0424		DEVICE DTA6;TAPEDCB;DTACHN+6
033012  0166
033013  4210
033014  0026
033015  0424		DEVICE DTA7;TAPEDCB;DTACHN+7
033016  0167
033017  4210
033020  0027
			>
		IFDEF LPT <
033021  1420		DEVICE LPT;1040;LPTCHN+0
033022  2400
033023  1040
033024  0030
			>
		IFDEF RX01 <RXDCB=4250>
		IFDEF RX02 <RXDCB=4320>
		IFDEF RXA <
		IFNDEF SYRX02 <
			DEVICE RXA0;RXDCB;RXACHN+0
			DEVICE RXA1;RXDCB;RXACHN+1
			>
		IFDEF SYRXO2 <
			DEVICE RXA1;RXDCB;SYSCHN+1	/RXA1 IS PUBLIC IN SINGL8
			DEVICE RXA2;RXDCB;RXACHN+0
			DEVICE RXA3;RXDCB;RXACHN+1
			>

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 198-1

			DEVICE RBA0;4410;RXACHN+2
			DEVICE RBA1;4410;RXACHN+3	/BYTE MODE FLOPPY
			>
		IFDEF SYRK8E <
			DEVICE RKB0;4230;SYSCHN+1
			DEVICE RKA1;4230;SYSCHN+2
			DEVICE RKB1;4230;SYSCHN+3
			DEVICE RKA2;4230;SYSCHN+4
			DEVICE RKB2;4230;SYSCHN+5
			DEVICE RKA3;4230;SYSCHN+6
			DEVICE RKB3;4230;SYSCHN+7
			>
		IFDEF SY3040 <
033025  2213		DEVICE RKB0;4400;SYSCHN+1
033026  0260
033027  4400
033030  0011
033031  2213		DEVICE RKA1;4400;SYSCHN+2
033032  0161
033033  4400
033034  0012
033035  2213		DEVICE RKB1;4400;SYSCHN+3
033036  0261
033037  4400
033040  0013
033041  2213		DEVICE RKA2;4400;SYSCHN+4
033042  0162
033043  4400
033044  0014
033045  2213		DEVICE RKB2;4400;SYSCHN+5
033046  0262
033047  4400
033050  0015
033051  2213		DEVICE RKA3;4400;SYSCHN+6
033052  0163
033053  4400
033054  0016
033055  2213		DEVICE RKB3;4400;SYSCHN+7
033056  0263
033057  4400
033060  0017
			>
		IFDEF NSRK8E <
			DEVICE RKA0;4230;DSKCHN+0
			DEVICE RKB0;4230;DSKCHN+1
			DEVICE RKA1;4230;DSKCHN+2
			DEVICE RKB1;4230;DSKCHN+3
			DEVICE RKA2;4230;DSKCHN+4
			DEVICE RKB2;4230;DSKCHN+5
			DEVICE RKA3;4230;DSKCHN+6
			DEVICE RKB3;4230;DSKCHN+7
			>
		IFDEF SYRL01 <
			DEVICE RL0B;4260;SYSCHN+1
			DEVICE RL1A;4260;SYSCHN+2

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 198-2

			DEVICE RL1B;4260;SYSCHN+3
			DEVICE RL2A;4260;SYSCHN+4
			DEVICE RL2B;4260;SYSCHN+5
			DEVICE RL3A;4260;SYSCHN+6
			DEVICE RL3B;4260;SYSCHN+7

			DEVICE RL0C;4310;RLCCHN+0
			DEVICE RL1C;4310;RLCCHN+1
			DEVICE RL2C;4310;RLCCHN+2
			DEVICE RL3C;4310;RLCCHN+3
			>
		IFDEF NSRL01 <
			DEVICE RL0A;4260;DSKCHN+0
			DEVICE RL0B;4260;DSKCHN+1
			DEVICE RL1A;4260;DSKCHN+2
			DEVICE RL1B;4260;DSKCHN+3
			DEVICE RL2A;4260;DSKCHN+4
			DEVICE RL2B;4260;DSKCHN+5
			DEVICE RL3A;4260;DSKCHN+6
			DEVICE RL3B;4260;DSKCHN+7

			DEVICE RL0C;4310;RLCCHN+0
			DEVICE RL1C;4310;RLCCHN+1
			DEVICE RL2C;4310;RLCCHN+2
			DEVICE RL3C;4310;RLCCHN+3
			>
		IFDEF CRD <
		CDRPAT,	DEVICE CDR;2030;CRDCHN+0	/MUST BE THE LAST IN THE LIST !!!
			>
033061  0000		0000				/END OF LIST !

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 199

	7000	BOBOOT,	RELOC 7000
037000* 0000	BGNUMB,	0		/GETS DEVICE TYPE ON BOOT OR RESTORE

		LNGLST,			/LIST OF DISK LENGTH'S
037001* 1520		-SIZE0		/DSK0: = SYS:
037002* 1520		-SIZE1		/DSK1:
037003* 4650		-SIZE2		/DSK2:
037004* 4650		-SIZE3		/DSK3:
037005* 1520		-SIZE4		/DSK4:
037006* 1520		-SIZE5		/DSK5:
037007* 1520		-SIZE6		/DSK6:
037010* 1520		-SIZE7		/DSK7:

037011* 0000	BOTRNS,	0		/LOCAL 'HANDLER' TO KEEP SYS: VIRGIN
037012* 3235		DCA TRTEMP
037013* 1611		TAD I BOTRNS
037014* 2211		ISZ BOTRNS
037015* 3227		DCA BOCALL
037016* 1611		TAD I BOTRNS
037017* 2211		ISZ BOTRNS
037020* 3230		DCA BOCALL+1
037021* 1611		TAD I BOTRNS
037022* 2211		ISZ BOTRNS
037023* 3231		DCA BOCALL+2
037024* 1235		TAD TRTEMP
037025* 6000		6000
037026* 5232		JMP .+4
037027* 0000	BOCALL,	ZBLOCK 3
037032* 7440		SZA
037033* 7402		HLT
037034* 5611		JMP I BOTRNS
037035* 0000	TRTEMP,	0

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 200

037036* 0000	ASKDIR,	0		/ASK PERMISSION TO ZERO THE DIRECTORY
037037* 4211		JMS BOTRNS	/READ DIRECTORY FROM THIS SYS:
037040* 0200		   200
037041* 0000		   0
037042* 0001		   1
037043* 1001		TAD 1		/LOOK AT INITIAL BLOCK
037044* 1377		TAD (-70	/IS IT A SYSTEM DIRECTORY?
037045* 7650		SNA CLA
037046* 5636		 JMP I ASKDIR	/YES, GO ON
037047* 1274	BTXT1,	TAD ZEROMS	/NO, WRITE MESSAGE FOR OK TO ZERO
037050* 2247		ISZ BTXT1	/
037051* 6046		TLS		/
037052* 7640		SZA CLA		/
037053* 5247		 JMP BTXT1	/
037054* 6032		KCC		/
037055* 6031		KSF		/WAIT FOR ANSWER
037056* 5255		 JMP .-1	/
037057* 6036		KRB		/
037060* 0376		AND (337	/STRIP LOWERCASE BIT
037061* 1375		TAD (-"Y	/
037062* 7440		SZA		/
037063* 1374		 TAD ("Y-"J	/
037064* 7640		SZA CLA		/
037065* 7402		 HLT		/STOP THIS THING ...!!!
037066* 1373		TAD (215	/CRLF
037067* 6046		TLS		/
037070* 1372		TAD (212-215	/
037071* 6046		TLS		/
037072* 2236		ISZ ASKDIR	/'ZERO' RETURN
037073* 5636		JMP I ASKDIR	/AC RANDOM !

		ZEROMS,
		IFNDEF GERMAN <
		"N;"O;" ;"v;"a;"l;"i;"d;" ;"d;"i;"r;"e;"c;"t;"o;"r;"y;" ;"o
			"n;" ;"t;"h;"i;"s;" ;"a;"r;"e;"a;" ;"-;" ;"s;"h;"a;"l
			"l;" ;"I;" ;"Z;"E;"R;"O;" ;"i;"t;" ;"?;" ;0	/ >

		IFDEF GERMAN <
037074* 0313	"K;"E;"I;"N;" ;"V;"e;"r;"z;"e;"i;"c;"h;"n;"i;"s;" ;"a;"u
037075* 0305
037076* 0311
037077* 0316
037100* 0240
037101* 0326
037102* 0345
037103* 0362
037104* 0372
037105* 0345
037106* 0351
037107* 0343
037110* 0350
037111* 0356
037112* 0351
037113* 0363
037114* 0240

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 200-1

037115* 0341
037116* 0365
037117* 0346		"f;" ;"d;"i;"e;"s;"e;"m;" ;"B;"e;"r;"e;"i;"c;"h;" ;"-
037120* 0240
037121* 0344
037122* 0351
037123* 0345
037124* 0363
037125* 0345
037126* 0355
037127* 0240
037130* 0302
037131* 0345
037132* 0362
037133* 0345
037134* 0351
037135* 0343
037136* 0350
037137* 0240
037140* 0255
037141* 0240		" ;"s;"o;"l;"l;" ;"i;"c;"h;" ;"Z;"E;"R;"O;" ;"m;"a;"c
037142* 0363
037143* 0357
037144* 0354
037145* 0354
037146* 0240
037147* 0351
037150* 0343
037151* 0350
037152* 0240
037153* 0332
037154* 0305
037155* 0322
037156* 0317
037157* 0240
037160* 0355
037161* 0341
037162* 0343
037163* 0350		"h;"e;"n;" ;"?;" ;0	/ >
037164* 0345
037165* 0356
037166* 0240
037167* 0277
037170* 0240
037171* 0000

037172* 7775
037173* 0215
037174* 0017
037175* 7447
037176* 0337
037177* 7710
	7200	PAGE

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 201

037200* 5330		JMP BOOT	/ENTRY FOR NORMAL BOOTSTRAP OPERATION
037201* 4777	B0,	JMS I (ASKDIR	/READ DIR AND ASK PERMISSION TO ZERO IF BAD
037202* 5230		 JMP DIROK	/DIRECTORY WAS OK, GO ON
037203* 7240		ACM1		/DIR WAS BAD BUT WE GOT OK, MAKE NEW DIRECTORY
037204* 3000		DCA 0		/ONE EMPTY
037205* 1376		TAD (70
037206* 3001		DCA 1		/FILE STORAGE START
037207* 3002		DCA 2		/NO LINK
037210* 3003		DCA 3		/NO OPEN OUTPUT FILES
037211* 7240		ACM1
037212* 3004		DCA 4		/1 ADD. INFO WORD (DATE)
037213* 3005		DCA 5		/EMPTY ENTRY
037214* 1775		TAD I (BGNUMB	/WHO AM I?
037215* 7112		CLL RTR
037216* 7010		RAR		/045X
037217* 1374		TAD (LNGLST-451	/INDEX INTO BACKGROUND LENGTH LIST
037220* 3010		DCA 10
037221* 1410		TAD I 10	/GET NEGATIVE LENGTH
037222* 1376		TAD (70		/--70 BLOCKS FOR SYSTEM
037223* 3006		DCA 6		/INTO LENGTH OF FIRST ENTRY
037224* 4773		JMS I (BOTRNS	/WRITE IN MY DIRECTORY
037225* 4200		   4200		/HOPE I HAVEN'T KILLED ANYTHING
037226* 0000		   0
037227* 0001		   1

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 202

037230* 7301	DIROK,	AC0001
037231* 4773		JMS I (BOTRNS	/READ MONITOR FROM DSK0:
037232* 0010		   10
037233* 0000		   0
037234* 0007		   7		/KM-USR-DVHS-ENTER(TM8E)
			 		/7  13  16   26
037235* 1775		TAD I (BGNUMB	/GET OUR DEVICE TYPE
037236* 3772		DCA I (7560	/SET OUR SYS: TYPE
037237* 1775		TAD I (BGNUMB
037240* 3771		DCA I (7561	/SAME FOR DSK:
037241* 1370		TAD (7447+15-1-1
037242* 3010		DCA 10		/SET POINTER TO RESIDENCY TABLE
037243* 1367		TAD (7560+15-1-1
037244* 3011		DCA 11		/SET POINTER TO DEVICE TYPE TABLE
		IFDEF SINGL8 <
			TAD (7620	/ENTRY POINT DSK2:
			DCA I 10	/
			TAD (6520	/DEVICE TYPE DSK2:
			DCA I 11	/ >
		IFNDEF SINGL8 <
037245* 2010		ISZ 10		/
037246* 2011		ISZ 11		/ >
		IFDEF SINGL8 <
			TAD (7615	/ENTRY POINT DSK1:
			DCA I 10	/
			TAD (6510	/DEVICE TYPE DSK1:
			DCA I 11	/ >
		IFNDEF SINGL8 <
037247* 2010		ISZ 10		/
037250* 2011		ISZ 11		/ >
037251* 1366		TAD (7612	/ENTRY POINT DSK0:
037252* 3410		DCA I 10	/
037253* 1365		TAD (6500	/DEVICE TYPE DSK0:
037254* 3411		DCA I 11	/

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 203

037255* 6211		CDF 10		//
037256* 1764		TAD I (36+2000	//
		IFDEF SINGL8 <
			TAD (2000+15-1-1// >
		IFNDEF SINGL8 <
037257* 1363		TAD (2000+17-1-1// >
037260* 3010		DCA 10		//SET POINTER TO PERMANENT DEVICE NAME TABLE
		IFDEF SINGL8 <
			TAD (6005	//CODE FOR DSK2:
			DCA I 10	//
			TAD (6004	//CODE FOR DSK1:
			DCA I 10	// >
037261* 1362		TAD (6003	//CODE FOR DSK0:
037262* 3410		DCA I 10	//
037263* 1761		TAD I (37+2000	//
037264* 1274		TAD BO2000	//
037265* 3000		DCA 0		//SET POINTER TO DEVICE HANDLER INFO
037266* 6201	BRSLP,	CDF 0		/ONCE ONLY CODE
037267* 1735		TAD I RESTEM	/IS THIS DEVICE RESIDENT?
037270* 6211		CDF 10		//
037271* 7640		SZA CLA		//
037272* 3400		DCA I 0		//ZERO DEVICE HANDLER INFO FOR THIS DEVICE
037273* 2335		ISZ RESTEM	//
037274* 2000	BO2000,	ISZ 0		//TO NEXT
037275* 2336		ISZ RESCNT	//MORE?
037276* 5266		JMP BRSLP	//YES
037277* 6201		CDF 0
037300* 4773		JMS I (BOTRNS	/WRITE ON SYS:
037301* 4010		   4010
037302* 0000		   0
037303* 0007		   7
037304* 7301		AC0001		/READ NEXT PART OF MONITOR
037305* 4773		JMS I (BOTRNS	/FROM DSK0:
037306* 3610		   3610
037307* 0000		   0000
037310* 0051		   51		/CD-SADA-ERR-CHN-ODT-MRG-REM-BOO-CCL
					/51 54   56  57  60  64  65  66  67
		IFZERO OS8-40 <		/MAKE CCL RUN FROM DSK0:
037311* 6211		CDF 10
037312* 1360		TAD (17		/MOVE DSK0: DEV # TO CCL OVERLAY
037313* 3757		DCA I (7205
037314* 1366		TAD (7612	/ALSO DSK0: HANDLER ENTRY POINT
037315* 3756		DCA I (7206
037316* 6201		CDF 0		/ >
037317* 4773		JMS I (BOTRNS	/WRITE IT BACK ON THIS SYS:
037320* 7610		   7610
037321* 0000		   0
037322* 0051		   51

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 204

037323* 4773		JMS I (BOTRNS	/WRITE BLOCK 0 ON SYS:
037324* 4200		   4200
037325* 7400		   7400
037326* 0000		   0000
037327* 5755		JMP I (BOOT1

037330* 4773	BOOT,	JMS I (BOTRNS	/READ BLOCK 0
037331* 0200		   200		/WHICH HAS OUR SPECIFIC INFO
037332* 7400		   7400
037333* 0000		   0000
037334* 5755		JMP I (BOOT1
037335* 7447	RESTEM,	7447		/ONCE ONLY
037336* 7761	RESCNT,	-17		/ONCE ONLY
037355* 7400
037356* 7206
037357* 7205
037360* 0017
037361* 2037
037362* 6003
037363* 2015
037364* 2036
037365* 6500
037366* 7612
037367* 7573
037370* 7462
037371* 7561
037372* 7560
037373* 7011
037374* 6330
037375* 7000
037376* 0070
037377* 7036
	7400		PAGE

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 205

037400* 6211	BOOT1,	CDF 10
037401* 1247	BOLOOP,	TAD BOOT1+47
037402* 3611		DCA I BOPNT
037403* 2201		ISZ BOLOOP
037404* 2211		ISZ BOPNT
037405* 5201		 JMP BOLOOP
037406* 6201		CDF 0
037407* 5610		JMP I .+1	/SLIP INTO 7600
037410* 7605		7605
037411* 7647	BOPNT,	7647
		IFDEF SYRX02 <
			NOPUNC		/IT TOOK MORE TIME TO FIGURE OUT
			*.+2		/RX02 LOADS AT 2
			ENPUNC	/ >
		IFNDEF SINGL8 <
037412* 0207	BOMESS,	207;"M;"8;" ;"D;"A;"T;"A;"-;"D;"I;"S;"K / >
037413* 0315
037414* 0270
037415* 0240
037416* 0304
037417* 0301
037420* 0324
037421* 0301
037422* 0255
037423* 0304
037424* 0311
037425* 0323
037426* 0313
		IFDEF SINGL8 <
		BOMESS,	207;"Z;"M;" ;"D;"A;"T;"A;"-;"D;"I;"S;"K	/ >

		IFDEF SYRK8E <
			NOP
		RK0030,	6741		/WAIT TILL RK8E READY
			 JMP .-1	/ >
		IFDEF SYRL01 <
			NOP
			NOP
		RL0031,	6601		/WAIT TILL RL01 READY
			 JMP .-1	/ >
		IFDEF SYRX02 <
			NOP
			NOP
		RX0033,	6755		/WAIT TILL RX02 READY, 'LOAD' JUMPS TO HERE
			 JMP RXLOAD+1	/FIGURE 8 WAIT WITH 'LOAD' SUBR >
037427* 7200		CLA
037430* 1212	BOMSLP,	TAD BOMESS
037431* 6046		TLS		/TYPE A WARNING MESSAGE IF BOOTED
037432* 6041		TSF		/ON A REAL MACHINE
037433* 5232		 JMP .-1
037434* 2230		ISZ BOMSLP	/SETUP FOR NEXT CHARACTER
037435* 7740		SMA SZA CLA
037436* 5230		 JMP BOMSLP	/GO FOR NEXT CHARACTER
037437* 7402		HLT
		IFDEF SYRX02 <

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 205-1

			JMS RXLOAD	/EMPTY SILO
			JMP .-1		/RX02 PRIMARY BOOT JUMPS TO HERE
			NOPUNC
			*.-2		/BACK TO NORMAL (RELOC'D)
			ENPUNC
			RXLOAD=53	/DEF FROM PRIMARY BOOT >
	3522		RELOC
	0440	BOBOEND=.-BOBOOT

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 206

		TRPTAB,
		IFDEF UNTRP1 <UNTRP1^10+6001>
		IFDEF UNTRP2 <UNTRP2^10+6001>
		IFDEF UNTRP3 <UNTRP3^10+6001>
		IFDEF UNTRP4 <UNTRP4^10+6001>
		IFDEF UNTRP5 <UNTRP5^10+6001>
		IFDEF UNTRP6 <UNTRP6^10+6001>
		IFDEF UNTRP7 <UNTRP7^10+6001>
		IFDEF UNTRP8 <UNTRP8^10+6001>
		IFDEF UNTRP9 <UNTRP9^10+6001>
033522  0000		0000	/END OF LIST

033523  2631	XDSKTAB,"S^100+"Y&3777;0;0;SIZE0
033524  0000
033525  0000
033526  6260
033527  2631		USYS1;UNIT1;FROM1;FROM1+SIZE1
033530  0001
033531  0000
033532  6260
033533  2631		USYS2;UNIT2;FROM2;FROM2+SIZE2
033534  0003
033535  0000
033536  3130
033537  2631		USYS3;UNIT3;FROM3;FROM3+SIZE3
033540  0003
033541  3130
033542  6260
033543  2631		USYS4;UNIT4;FROM4;FROM4+SIZE4
033544  0004
033545  0000
033546  6260
033547  2631		USYS5;UNIT5;FROM5;FROM5+SIZE5
033550  0005
033551  0000
033552  6260
033553  2631		USYS6;UNIT6;FROM6;FROM6+SIZE6
033554  0006
033555  0000
033556  6260
033557  2631		USYS7;UNIT7;FROM7;FROM7+SIZE7
033560  0007
033561  0000
033562  6260

033563  0000	BOOBUF,	ZBLOCK 1000	/BUFFER IN WHICH THE BOOTBLK IS ASSEMBLED
	4232	DVRSTB=BOOBUF+447  /SYS:-ENTRY DEVICE RESIDENCY TABLE
	4343	DVTYPT=BOOBUF+560 /SYS:-ENTRY IN DEVICE TYPE TABLE
	4372	FAKSYS=BOOBUF+607 /POSITION OF SYS: ENTRYP. IN BLOCK 0
	4562	BGCORW=BOOBUF+777 /BACKGROUND CORE-WORD
				/END IFNZRO BGMAX >


	4600	PAGE

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 207

		/***************** TASKBUILDER *************************
		/9 FILES CAN BE LOADED IN ONE SINGLE COMMAND LINE.
		/ONE SINGLE FILE MAY CONTAIN MORE THAN 1 TASK.

		/OPTIONS:

		/PAGE 0 VARIABLES
	0020	BINPC=TEMP5		/LOAD POINTER
	0001	ZNAME=TEMP1	/TASK'S NAME
	0002	ZLENG=TEMP2	/LENGTH IN PAGES
	0003	ZWC=TEMP3	/LENGTH OF TASK IN WORDS
	0007	ZCNT=TEMP4	/TEMPORARY COUNTER
	0021	ZBLK=TEMP6	/RELATIVE STARTING BLOCK
	0022	ZADDR=TEMP7	/STARTING ADDRESS WITHIN THE TASK

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 208

		/ACTIVATE THE PRE-ASSEMBLED CORE-RESIDENT TASKS.
034600  0000	SETNAM,	0		/
034601  1064		TAD [NAMLST-1	/SET UP POINTERS
034602  3016		DCA AUTO16
034603  1063		TAD [TCBTAB
034604  6201		CDF 0		//
034605  3000	SETNM1,	DCA TEMP	//
034606  1400		TAD I TEMP	//FIRST ITEM IS NAME OR 00
034607  7450		SNA
034610  5600		 JMP I SETNAM	//ZERO IS TERMINATOR
034611  3416		DCA I AUTO16
034612  3400		DCA I TEMP	//CLEAR THE BACKLINK!!
034613  1000		TAD TEMP	//MOVE ONE BLOCKLET FURTHER
034614  1145		TAD [10
034615  5205		JMP SETNM1	//CYCLE

034616  0000	TSKBLD,	0		/TASKBUILD ROUTINE
034617  4462	RSTRT,	JMS I [OS8IN	/READ CHAR FROM OS8IN
034620  5616		 JMP I TSKBLD	/NO INPUT, RETURN

		/START LOADING ALL FILES, ONE BEHIND THE OTHER
		XL4,
034621  1061		TAD [200-1	/V2
034622  3010		DCA AUTO10	/V2
034623  1060		TAD [-4600	/DON'T SPOIL  BATCH (5000 AND UP)
034624  3000		DCA TEMP	/V2
034625  6241		CDF BGFLD+10	/V2
034626  3410		DCA I AUTO10	/V2 CLEAR LOADER AREA
034627  2000		ISZ TEMP	/V2
034630  5226		 JMP .-2	/V2
034631  6231		CDF BGFLD	/V2
034632  7240		ACM1		/RESET TO LEADER PHASE
034633  4457	XL5,	JMS I [BINL	/READ FIRST FRAME AND SO ON
034634  5616		  JMP I TSKBLD	/CTRL/Z DETECTED
034635  5272		  JMP XL6	/CHECKSUM DETECTED
034636  1020		TAD BINPC	/AC=0;INSPECT BEFORE LOADING
034637  7650		SNA CLA		/
034640  5246		 JMP XTABLS	/LOAD PAGE ZERO: PATCH MONITOR TABLES
034641  1024		TAD BINAC
034642  6241		CDF BGFLD+10	//THERE WILL THE TASK BE LOADED
034643  3420		DCA I BINPC	//
034644  6231		CDF BGFLD	/
034645  5233		JMP XL5		/READ NEXT FRAME

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 209

034646  1024	XTABLS,	TAD BINAC
034647  0056		AND [7707
034650  1055		TAD [-6201
034651  7640		SZA CLA		/MUST BE A CDF
034652  4563	ERR21,	JMS I [ERROR	/PREAMBLE ERROR
034653  1024		TAD BINAC
034654  3266		DCA YCDF
034655  4457		JMS I [BINL	/GET NEXT WORD
034656  7000		 NOP
034657  4563	ERR21A,	 JMS I [ERROR	/PREABLE ERROR
034660  1024		TAD BINAC	/POINTER TO WORD TO PATCH
034661  3000		DCA TEMP	/
034662  4457		JMS I [BINL	/GET NEXT WORD
034663  7000		 NOP
034664  4563	ERR21B,	 JMS I [ERROR	/PREABLE ERROR
034665  1024		TAD BINAC	/THAT'S THE VALUE
034666  7402	YCDF,	HLT		/GETS A CDF
034667  3400		DCA I TEMP	/AND PATCH IT NOW
034670  6231		CDF BGFLD	/RESTORE DATAFIELD
034671  5233		JMP XL5		/AND JUMP BACK TO NORMAL LOADING

034672  7640	XL6,	SZA CLA		/CHECKSUM IN AC
034673  4563	ERR25,	 JMS I [ERROR	/CKECKSUM ERROR
		/FETCH NAME AND LENGTH FROM TASK HEADER.
		/ALSO COMPUTE THE RELATIVE STARTING ADDRESS
034674  7350		AC3777
034675  6241		CDF BGFLD+10
034676  0574		AND I [200	//
034677  7450		SNA		//
034700  5221		 JMP XL4	//EMPTY BINARY, SKIP IT
034701  3001		DCA ZNAME	//
034702  1503		TAD I [201	//GET LENGTH WORD
034703  0147		AND [7600	//MAKE CORRECT WORDCOUNT
034704  3003		DCA ZWC		//
034705  1503		TAD I [201	//
034706  0070		AND [77		//TASK CONNECTED?
034707  7104		CLL RAL		//# OF WORDS FOR 'CONNECT' IN AC
034710  1103		TAD [201	//SKIP THEM
034711  3022		DCA ZADDR	//
034712  1422		TAD I ZADDR	//NOW SCAN THE RELOCATE POINTERS
034713  2022		ISZ ZADDR	//
034714  7640		SZA CLA		//
034715  5312		 JMP .-3	//
034716  6231		CDF BGFLD
034717  1003		TAD ZWC		/SAVE ALSO LENGTH IN # OF PAGES
034720  7110		CLL RAR
034721  7002		BSW
034722  3002		DCA ZLENG	/LOADED BEYOND LENGTH OF TASK?
034723  1003		TAD ZWC
034724  1174		TAD [200
034725  7041		CIA
034726  7100		CLL
034727  1020		TAD BINPC	/BINPC FROM 200 UP
034730  7630		SZL CLA
034731  4563	ERR26,	 JMS I [ERROR	/LOADED BEYOND LENGTH

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 210

		/MAKE A TASK-CONTROL BLOCKLET
		/FIRST OF ALL GET AN ENTRY IN NAMLST.
		/SEARCH NAMLST IN CASE THIS IS A REPLACE OPERATION
		/THEN CHECK WHETHER THE
		/NEW VERSION CAN BE DROPPED INTO THE SAME HOLE.
034732  1113	XL90,	TAD [-MAXNAM	/TEST FOR MAX NUMBER OF ENTRIES
034733  3007		DCA ZCNT
034734  1054		TAD [NAMLST
034735  3000		DCA TEMP
034736  6201		CDF 0		//
034737  1400	XL9,	TAD I TEMP
034740  7041		CIA
034741  1001		TAD ZNAME	//SAME NAME?
034742  7650		SNA CLA
034743  5453		 JMP I [XL91	//Y
034744  2000		ISZ TEMP	//NEXT ENTRY
034745  2007		ISZ ZCNT	//ALL DONE ?
034746  5337		 JMP XL9	//NO, CYCLE
034747  1544		TAD I [FHEAD	//MUST BE A NEW NAME, ALLOCATE NEW TCB
034750  7450		SNA		//ANY SPARE TCB'S ?
034751  4563	ERR28,	 JMS I [ERROR	//NAMELIST EXHAUSTED
034752  3000		DCA TEMP	//POINTER TO NEW TCB
034753  1400		TAD I TEMP	//GET NEXT FREE TCB ADDRESS
034754  3544		DCA I [FHEAD	//AND STORE IN FHEAD
034755  6231		CDF BGFLD	/

		/SEARCH A HOLE IN DISKMAP.
034756  1052	XL75,	TAD [DSKMAP
034757  3010		DCA AUTO10
034760  1410	LOOP,	TAD I AUTO10
034761  7640		SZA CLA
034762  5360		 JMP .-2	/LOOP
034763  1010		TAD AUTO10
034764  1051		TAD [-ENDMAP	/COMPARE WITH END OF MAP
034765  7650		SNA CLA		/IS THIS THE END ?
034766  4563	ERR27,	 JMS I [ERROR	/DISKMAP FULL
034767  1002		TAD ZLENG
034770  7171		STL CIA RAR	/CONVERT TO - # BLOCKS
034771  3007		DCA ZCNT	/SETUP COUNTER
034772  5376		JMP LOOP2	/JUMP IN LOOP TO CHECK LENGTH
034773  1410	LOOP1,	TAD I AUTO10	/GET NEXT WORD
034774  7640		SZA CLA		/ALSO FREE ?
034775  5360		 JMP LOOP	/NO, LOOK FOR NEXT HOLE
034776  2007	LOOP2,	ISZ ZCNT	/LONG ENOUGH ?
034777  5373		 JMP LOOP1	/NO, SEE IF THERE IS MORE ROOM
		/OK, FOUND HOLE THAT'S LARGE ENOUGH
035000  1002		TAD ZLENG
035001  7171		STL CIA RAR	/- # BLOCKS
035002  1010		TAD AUTO10	/SAVE POSITION IN DISKMAP
035003  1050		TAD [-DSKMAP	/RELATIVE BLOCK#
035004  1452		TAD I [DSKMAP	/ADD OFFSET IN SAVE FILE
035005  3021		DCA ZBLK

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 211

		/FILL IN THE DISKMAP
035006  1002		TAD ZLENG	/COUNTS # OF PAGES
035007  7171		STL CIA RAR	/V3 CONVERT TO -# OF BLOCKS
035010  3007		DCA ZCNT
035011  1002		TAD ZLENG	/SET POINTER TO BEGIN OF HOLE
035012  7171		STL CIA RAR	/
035013  1010		TAD AUTO10
035014  3010		DCA AUTO10
035015  1001		TAD ZNAME	/NAME MUST BE UNEQ 0
035016  3410		DCA I AUTO10
035017  2007		ISZ ZCNT
035020  5215		 JMP .-3
035021  5267		JMP XL10

		/NAME DOES ALREADY EXIST IN THE SYSTEM, DELETE THE OLD
		/TASK FIRST
035022  3400	XL91,	DCA I TEMP	/ZERO THE NAME ENTRY
035023  1000		TAD TEMP
035024  1047		TAD [-NAMLST
035025  7104		CLL RAL		/^10
035026  7006		RTL		/FIND PLACE IN TCBTAB
035027  1063		TAD [TCBTAB
035030  3000		DCA TEMP
035031  1544		TAD I [FHEAD
035032  3400		DCA I TEMP
035033  1000		TAD TEMP
035034  3544		DCA I [FHEAD
035035  2000		ISZ TEMP
035036  2000		ISZ TEMP
035037  2000		ISZ TEMP
035040  1400		TAD I TEMP	/GET BLOCKNUMBER OFFSET

035041  7041		CIA
035042  6231		CDF BGFLD
035043  1452		TAD I [DSKMAP	/SUBSTRACT OFFSET IN SAVEFILE
035044  7040		CMA		/CIA: BUG, CORRECTED 13-JAN-80
035045  1052		TAD [DSKMAP
035046  3010		DCA AUTO10
035047  1010		TAD AUTO10
035050  3011		DCA AUTO11
035051  1410	DELETE,	TAD I AUTO10
035052  7041		CIA
035053  1001		TAD ZNAME
035054  7640		SZA CLA		/STILL THE SAME NAME ?
035055  5260		 JMP ENDDEL	/NO, ENTRY IS DELETED
035056  3411		DCA I AUTO11	/DELETE THIS ENTRY
035057  5251		JMP DELETE
035060  6211	ENDDEL,	CDF 10
035061  1446		TAD I [7643
035062  6231		CDF BGFLD
035063  0045		AND [400
035064  7640		SZA CLA		/DELETE OPTION SWITCH (/D) ?
035065  5444		 JMP I [XL4	/YES, DON'T INSTALL THIS TASK
035066  5443		JMP I [XL90	/NO, GO INSTALL THIS TASK

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 212

		/START FILLING IN THE PARAMETERS:
035067  1000	XL10,	TAD TEMP	/POINTER IN TCBTAB
035070  3011		DCA AUTO11
035071  6201		CDF 0		//
035072  3400		DCA I TEMP	//ZERO BACKLINK
035073  6241		CDF BGFLD+10
035074  7203		AC0100		/EXTRACT AUTO-START BIT
035075  0503		AND I [201
035076  6201		CDF 0
035077  3411		DCA I AUTO11	/SET 0 OR 100 IN THREAD WORD
035100  1022		TAD ZADDR	/STARTING ADDRESS FROM *200 ON
035101  0061		AND [177	/V3 MAKE IT PAGE ZERO
035102  3411		DCA I AUTO11	/RELATIVE STARTING ADDRESS
035103  1021		TAD ZBLK
035104  3411		DCA I AUTO11	/RELATIVE BLOCK NUMBER
035105  1003		TAD ZWC		/LENGTH,FIELD AND ONDISK BIT
035106  7110		CLL RAR		/V7A BREAK-FLAG=0
035107  1042		TAD [FIELDS^10+1 /V3 SET ONDISK BIT,
035110  3411		DCA I AUTO11	/RELATE TO HIGHEST+1 FG-FIELD
035111  1041		TAD [CDF%2
035112  3411		DCA I AUTO11

		/UPDATE NAMLST.
		/POSITION IN NAMLST.
035113  1000		TAD TEMP
035114  1063		TAD [-TCBTAB
035115  7110		CLL RAR
035116  7110		CLL RAR
035117  7110		CLL RAR
035120  1054		TAD [NAMLST
035121  3000		DCA TEMP
035122  1001		TAD ZNAME
035123  3400		DCA I TEMP

		/WRITE TASK ONTO DISK
035124  6231		CDF BGFLD
035125  1002		TAD ZLENG
035126  7111		CLL IAC RAR	/# OF BLOCKS
035127  1021		TAD ZBLK	/+ RELATIVE BLOCK #
035130  1777		TAD I (ACTLEN	/-ACTUAL FILE LENGTH
035131  7700		SMA CLA
035132  4563	ERR23,	 JMS I [ERROR	/?MULTI8.SV TOO SHORT?
035133  1003		TAD ZWC		/MAKE FUNCTIONWORD
035134  7130		STL RAR		/WRITE; WLL.LLL.FFF.000
035135  1040		TAD [BGFLD+10
035136  3344		DCA XLDTV
035137  1565		TAD I [OFSET	/BLOCK# ON DISK
035140  1021		TAD ZBLK
035141  3346		DCA XLBLK
035142  6202		CIF 0
035143  4564		JMS I [SYSHND
035144  0000	XLDTV,	  0		/FUNCTION WORD
035145  0200		  200		/ADDRESS IN CORE
035146  0000	XLBLK,	  0		/BLOCK # ON DISK
035147  4563	ERR29,	 JMS I [ERROR	/WRITE ERROR

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 212-1

035150  3025		DCA CHANGD	/SET SAVE FLAG
035151  5444		JMP I [XL4

035177  1015
	5200	PAGE

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 213

		/BINARY LOADER SUBROUTINE READ A BINAIRY FILE AND
		/PRODUCES TWO PARAMETERS OF 
		/INTEREST:THE LOAD POINTER 'BINPC', AND THE CONTENTS
		/OF THE DATA 'BINAC'. THE USER CAN TEST FORMATS AND
		/BOUNDARIES, AND HAS TO DEPOSIT THE DATA HIMSELF.
		/DURING LEADER PHASE THE ROUTINE IGNORES LEADER
		/CODE. A JMS TO BINL WITH AC UNEQ 0 ALSO
		/RESETS ALL PARAMETERS AND RETURNS TO LEADER MODE.

		/HOW TO USE THE ROUTINE AS A STANDARD BINARY LOADER
		/START,	JMS BINL
		/	   HLT	/EOT RETURN;AC=0
		/	   HLT	/READY RETURN;AC=DIFFERENCE IN CHECKSUMS
		/	TAD BINAC	/AC=0;NORMAL RETURN
		/	CDF DATAFIELD
		/	DCA I BINPC
		/	JMP START

035200  0000	BINL,	.-.		/AC UNEQ 0 =RESET PARAMETERS
035201  7640		SZA CLA
035202  5260		 JMP BINIT	/RESET
035203  2020		ISZ BINPC	/V4 UPDATE POINTER
035204  1277	BINCHX,	TAD BINW1	/V4 UPDATE CHECKSUM
035205  1300		TAD BINW2	/V4
035206  1301		TAD BINSUM	/V4
035207  3301	BINGO,	DCA BINSUM	/CLEAR OR ADD TO CHECKSUM
035210  1276		TAD BINCHR
035211  3277		DCA BINW1
035212  4462		JMS I [OS8IN	/V4 LOOK AHEAD
035213  5600		 JMP I BINL	/END OF TAPE
035214  3300		DCA BINW2
035215  4230		JMS BINGG	/READ NEXT
035216  5267		 JMP BINEND	/TRAILER= END
035217  4251		JMS BINASS	/ASSEMBLE WORD1 AND WORD2
035220  7430		SZL		/ORIGIN ?
035221  5226		 JMP BINNPC	/V4 YES:SET ORIGIN
035222  3024		DCA BINAC	/SAVE DATA
035223  2200		ISZ BINL	/NORMAL RETURN
035224  2200	BINOUT,	ISZ BINL	/V4 CHECKSUM RETURN
035225  5600		JMP I BINL	/V4

035226  3020	BINNPC,	DCA BINPC	/V4 SET ORIGIN
035227  5204		JMP BINCHX	/V4 DON'T UPDATE POINTER

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 214

035230  0000	BINGG,	.-.		/READ AND TEST FRAMES
035231  4462		JMS I [OS8IN	/V4
035232  5600		 JMP I BINL	/END OF TAPE
035233  3276		DCA BINCHR	/SAVE FRAME
035234  1276		TAD BINCHR
035235  1147		TAD [-200	/200 ?
035236  7510		SPA		/YES
035237  2230		 ISZ BINGG	/DATA OR ORIGIN
035240  7750		SPA SNA CLA
035241  5630		 JMP I BINGG	/DATA, ORIGIN OR L/T
035242  1276		TAD BINCHR
035243  1037		TAD [-300
035244  7500		SMA		/IS IT REALLY A BINARY FILE ?
035245  0036		 AND [7
035246  7650		SNA CLA		/V4
035247  5231		 JMP BINGG+1	/V4 IGNORE FIELD SETTING
035250  4563	ERR22,	JMS I [ERROR	/?BAD BINARY?

035251  0000	BINASS,	.-.		/ASSEMBLE 2 FRAMES
035252  1277		TAD BINW1
035253  7106		CLL RTL		/SWAP BYTES
035254  7006		RTL
035255  7006		RTL		/NO BSW!, ORIGIN SETTING MAKES LINK=1
035256  1300		TAD BINW2
035257  5651		JMP I BINASS	/RETURN

035260  3277	BINIT,	DCA BINW1	/V4
035261  3300		DCA BINW2	/V4
035262  1174		TAD [200	/V4
035263  3020		DCA BINPC	/V4
035264  4230		JMS BINGG
035265  5264		 JMP .-1	/IGNORE LEADER
035266  5207		JMP BINGO

035267  7240	BINEND,	ACM1
035270  1020		TAD BINPC
035271  3020		DCA BINPC	/BACKUP BINPC
035272  4251		JMS BINASS	/FOR CHECKSUM
035273  7041		CIA
035274  1301		TAD BINSUM
035275  5224		JMP BINOUT	/CHECKSUM RETURN

035276  0000	BINCHR,	0		/LAST READ CHAR.
035277  0000	BINW1,	0		/FIRST FRAME
035300  0000	BINW2,	0		/SECOND FRAME
035301  0000	BINSUM,	0		/CHECKSUM

	5400	PAGE

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 215

		/USER EQUATES
	0001	IBUFLG=1		/LENGTH OF INPUT BUFFER
		/PROGRAM EQUATES
	0030		OSIFLD=BGFLD	/FIELD OF PROGRAM IS 
	0030		IBUFLD=BGFLD	/FIELD OF INPUTBUFFER
	0030		IPRFLD=BGFLD	/FIELD OF CALLING PROGRAM

		/	DATAFIELD:
		/0 FIELD 0
		/1 FIELD 10
		/Z FIELD ZERO

035400  0000	OS8IN,	0
035401  5672		JMP I OSIPCH	/Z COROUTINES
		OSIFRST,
035402  6211	OSINXT,	CDF 10		/1
035403  2307		ISZ OSIFILP	/1
035404  1707		TAD I OSIFILP	/1
035405  6231		CDF OSIFLD	/
035406  7450		SNA		/Z
035407  5302		 JMP OSIRST	/Z NO NEXT ONE, MAKE RESTARTABLE
035410  6212		CIF 10		/
035411  4710		JMS I OSIUSR	/Z
035412  0012		   INQUIRE		/Z FETCH HANDLER
035413  0000	OSIHND,	   0		/Z INIT VALUE
035414  5221		 JMP ERR9	/VERY STRANGE INDEED
035415  1213		TAD OSIHND	/GET HANDLER ADDRESS
035416  1377		TAD (200
035417  0376		AND (7600
035420  7640		SZA CLA		/ADDRESS IN PAGE 7600 ?
035421  4775	ERR9,	 JMS I (ERROR	/?NON-RESIDENT HANDLER?
035422  6211		CDF 10		/1
035423  2307		ISZ OSIFILP	/1
035424  1707		TAD I OSIFILP	/1
035425  3237		DCA OSIBLK	/1
035426  6231		CDF OSIFLD	/

		OSIREAD,		/Z
035427  1376		TAD (7600	/Z
035430  3313		DCA OSICNT	/Z
035431  1374		TAD (200+IBUFLD	/Z
035432  3235		DCA OSIFUNC	/Z
035433  6202		CIF 0		/
035434  4613		JMS I OSIHND	/
		OSITEM,
035435  0230	OSIFUNC,   200+IBUFLD	/Z
035436  5600	OSIBUF,	   BUFST	/Z
035437  7746	OSIBLK,	   7746		/Z INIT VALUE
035440  4775	ERR10,	 JMS I (ERROR	/?READ ERROR?
035441  2237		ISZ OSIBLK	/Z
035442  1236		TAD OSIBUF	/Z
035443  3311		DCA OSIPNT	/Z

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 216

035444  1711	OSILP,	TAD I OSIPNT	/Z FAST BUFFER UNPACK
035445  4272		JMS OSIPCH	/Z
035446  1711		TAD I OSIPNT	/Z
035447  2311		ISZ OSIPNT	/Z
035450  0373		AND (7400	/Z
035451  3235		DCA OSITEM	/Z
035452  1711		TAD I OSIPNT	/Z
035453  4272		JMS OSIPCH	/Z
035454  1711		TAD I OSIPNT	/Z
035455  2311		ISZ OSIPNT	/Z
035456  0373		AND (7400	/Z
035457  7112		CLL RTR		/Z
035460  7012		RTR		/Z
035461  1235		TAD OSITEM	/Z
035462  7012		RTR		/Z
035463  7012		RTR		/Z
035464  4272		JMS OSIPCH	/Z
035465  2313		ISZ OSICNT	/Z
035466  5244		 JMP OSILP	/Z
035467  2312		ISZ OSINUM	/Z
035470  5227		 JMP OSIREAD	/Z
035471  5202		JMP OSINXT	/Z
035472  5402	OSIPCH,	OSIFRST		/Z COROUTINES
035473  0372		AND (377	/Z
035474  1371		TAD (-232	/Z
035475  7450		SNA		/Z
035476  5202		 JMP OSINXT	/Z
035477  2200		ISZ OS8IN
035500  1370		TAD (232	/Z
035501  5600		JMP I OS8IN	/Z

035502  1367	OSIRST,	TAD (OSIFRST	/Z
035503  3272		DCA OSIPCH	/Z
035504  1366		TAD (7617-1	/Z
035505  3307		DCA OSIFILP	/Z
035506  5600		JMP I OS8IN	/Z

035507  7616	OSIFILP,7617-1
035510  7700	OSIUSR,	7700
035511  0000	OSIPNT,	0
035512  0000	OSINUM,	0
035513  0000	OSICNT,	0

035566  7616
035567  5402
035570  0232
035571  7546
035572  0377
035573  7400
035574  0230
035575  2076
035576  7600
035577  0200
	5600	PAGE


/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 216-1

035600  0000	BUFST,	ZBLOCK 400	/INPUT BUFFER

	6400		ENDPWR=.+400&7400

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 217

		/PAGE ZERO LITERALS:
		$
030036  0007
030037  7500
030040  0040
030041  3100
030042  0031
030043  4732
030044  4621
030045  0400
030046  7643
030047  4313
030050  7406
030051  7023
030052  0372
030053  5022
030054  3465
030055  1577
030056  7707
030057  5200
030060  3200
030061  0177
030062  5400
030063  4000
030064  3464
030065  0212
030066  0215
030067  0240
030070  0077
030071  2234
030072  3363
030073  6241
030074  7774
030075  7756
030076  7764
030077  5372
030100  1030
030101  7761
030102  7762
030103  0201
030104  7773
030105  6233
030106  3521
030107  6000
030110  0471
030111  0005
030112  0137
030113  7730
030114  4001
030115  7360
030116  0004
030117  0205
030120  3317
030121  7775
030122  0113

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 217-1

030123  0112
030124  0110
030125  7660
030126  7776
030127  4342
030130  4231
030131  4233
030132  4232
030133  4562
030134  1040
030135  4707
030136  7777
030137  3361
030140  7760
030141  0600
030142  0017
030143  3217
030144  0133
030145  0010
030146  4163
030147  7600
030150  2000
030151  7644
030152  7642
030153  4616
030154  1600
030155  7740
030156  7577
030157  3522
030160  0020
030161  3700
030162  0361
030163  2076
030164  7607
030165  1014
030166  0352
030167  0223
030170  1064
030171  4600
030172  1400
030173  7700
030174  0200
030175  6004
030176  7746
030177  1000

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 218

ACCRD  1321      BG3IN  3100      CDTOAC 4101      C3BACK 0210
ACCRST 1330      BG3OUT 3120      CDTOIF 4107      C3CHAR 0000
ACM1   7240      BINAC  0024      CHAIND 0026      C3ESCP 0233
ACM2   7344      BINASS 5251      CHANGD 0025      C3FILL 0000
ACM3   7346      BINCHR 5276      CHEAD  0140      C37    0046
ACTLEN 1015      BINCHX 5204      CHNDRV 2347      C3700  0060
AC0001 7301      BINEND 5267      CINT   6204      C4     0043
AC0002 7326      BINGG  5230      CLEAR  1000      C6201  0061
AC0003 7325      BINGO  5207      CLKINT 0234      C6202  0005
AC0004 7307      BINIT  5260      CLKIN1 0264      C6203  0076
AC0006 7327      BINL   5200      CLNGTH 1166      C7     0044
AC0100 7203      BINNPC 5226      CLOSE  0004      C70    0047
AC2000 7332      BINOUT 5224      CLRQ   2731      C7000  0062
AC3777 7350      BINPC  0020      CLRQ1  2735      C7400  0063
AC4000 7330      BINSUM 5301      CLRQ2  2751      C7600  0065
AC5777 7352      BINW1  5277      CLRTAB 3320      C77    0050
AC6000 7333      BINW2  5300      COMPNT 0120      C7700  0066
AC7775 7346      BJOB   0122      CONCDF 2455      C7770  0067
AC7776 7344      BLDCUR 0753      CONGET 2454      C7771  0070
AC7777 7240      BLDNEW 0741      CONNCT 2400      C7774  0071
ADR    0276      BOBOEN 0440      CONSET 2431      C7775  0072
ALARM  0075      BOBOOT 3062      CONTAB 0130      C7776  0073
ALARM0 1434      BOCALL 7027      CONTIN 0001      C7777  0074
ASC    7403      BOLOOP 7401      CON1   2403      DAC    0160
ASEMMX 0010      BOMESS 7412      COPCLR 1434      DCSR   6504
ASKDIR 7036      BOMSLP 7430      COPDSK 0756      DEFER  0114
AUTO10 0010      BOOBUF 3563      COPYZ  1400      DELETE 5051
AUTO11 0011      BOOT   7330      CORMAP 3323      DEVLST 2761
AUTO12 0012      BOOT1  7400      CRLF   2162      DEVNAM 1263
AUTO13 0013      BOPNT  7411      CTAIL  0141      DGNCNT 0001
AUTO14 0014      BOTRNS 7011      CUDTV  2325      DGNNUM 3150
AUTO15 0015      BO2000 7274      CUF    6264      DGNPNT 3147
AUTO16 0016      BREAK  0074      CURTSK 0127      DGNTIC 0012
AUTO17 0017      BREAKR 0276      C0BACK 0210      DGNTIM 3112
BASE   0030      BREAK0 1442      C0CHAR 0000      DGN1   3117
BB     2504      BREAK1 0312      C0ESCP 0233      DGN2   3133
BBCNT  2516      BRKCHR 0206      C0FILL 0000      DGN4   3132
BGCORE 0010      BRKTST 1454      C1BACK 0210      DIROK  7230
BGCORW 4562      BRK1   0314      C1CHAR 0000      DISCON 2460
BGDATA 3707      BRK3   0311      C1ESCP 0233      DISP   1224
BGERR  0002      BRSLP  7266      C1FILL 0000      DISPAT 0471
BGFLD  0030      BSFLAG 1226      C100   0051      DISPLP 0512
BGFLDS 0005      BSIZE  0020      C17    0045      DISP1  0525
BGID   0155      BSSLOT 0033      C177   0052      DISP2  0537
BGMAX  0003      BSTAB  3361      C2     0041      DISP3  0550
BGNUMB 7000      BTXT1  7047      C2BACK 0210      DISP4  0552
BGREL  1072      BUFST  5600      C2CHAR 0000      DISP5  0554
BGSTOP 1000      B0     7201      C2ESCP 0233      DISP6  0400
BG1    3707      CALL   0024      C2FILL 0000      DISP7  0436
BG1IN  3000      CALL0  1045      C200   0053      DISTMP 2454
BG1OUT 3020      CALL1  1054      C212   0054      DIS1   2463
BG2    3775      CALL2  1063      C215   0055      DK     2463
BG2IN  3040      CCB    0356      C240   0056      DKCDF  2506
BG2OUT 3060      CCBLST 0362      C260   0057      DKCLOS 2557
BG3    4063      CD     0005      C3     0042      DKDTV  2562

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 218-1

DKERRO 2556      EMBSI1 1265      EM1    0520      EXIT   1040
DKNAME 2545      EMBSI2 1270      EM2    0522      FAKHND 2625
DKSLT1 2552      EMCALL 1000      EM20   0536      FAKLEN 0134
DKSLT2 2555      EMCDIF 0623      EM20TB 3527      FAKSYS 4372
DKUSED 0001      EMCHCK 0635      EM3    0523      FAKVER 0015
DK8EP  0130      EMCHNL 2244      EM9    1002      FASSGN 7623
DLCR   6502      EMCLA  1362      ENDDEL 5060      FBLKO  3416
DLSR   6512      EMCLCA 0716      ENDF00 4600      FCDIF  7737
DLSS   6506      EMDOT  0527      ENDF10 4200      FERROR 2656
DLTR   6514      EMDSK0 2331      ENDF20 0200      FETCH  0001
DLTW   6515      EMDSK1 2361      ENDF30 0200      FEXIT  7735
DMPBLK 2005      EMECHO 0760      ENDF40 0200      FGENIO 7670
DNTREL 0424      EMERRO 0723      ENDF50 0200      FGNOSY 7725
DOTF00 3200      EMFETC 2200      ENDF60 0200      FGTMP  7675
DOTF10 4200      EMGETF 0650      ENDF70 0200      FHEAD  0133
DOTF20 0120      EMGIGA 0542      ENDMAP 0755      FIELDS 0003
DOTF30 0120      EMGVIR 0677      ENDPWR 6400      FILLQ  2600
DOTF40 0120      EMH    0516      ENTER  0003      FILLQ1 2650
DOTF50 0120      EMHAND 2215      EOFERR 0020      FMASK  0045
DOTF60 0120      EMHD   0552      EOMERR 0010      FM203  7741
DOTF70 0120      EMHLT  0744      ERRFND 2117      FNORML 2655
DO6030 1506      EMINAC 1255      ERRLOG 2737      FQLAST 3340
DO6031 1464      EMLIST 0537      ERRLOP 2107      FRECNT 0121
DO6032 1504      EMLOOP 1115      ERRLST 2235      FREE   0120
DO6034 1525      EMNAME 1007      ERROR  2076      FRESLT 3360
DO6036 1501      EMNUMB 0600      ERRTSK 1441      FRETRN 2657
DO6044 1400      EMOPEN 2434      ERR0   2072      FROM1  0000
DO6046 1400      EMOR   1530      ERR10  5440      FROM2  0000
DPSZ   7451      EMQEND 0705      ERR2   1734      FROM3  3130
DRCR   6503      EMQUIC 0707      ERR21  4652      FROM4  0000
DRSR   6505      EMQUIT 0757      ERR21A 4657      FROM5  0000
DRSS   6507      EMREDY 1213      ERR21B 4664      FROM6  0000
DRTR   6516      EMREL  1074      ERR22  5250      FROM7  0000
DSDD   6501      EMREL1 1142      ERR23  5132      FSTEXT 0447
DSDE   6511      EMRUN  1273      ERR23A 0315      FSYS   7607
DSKCO1 0765      EMRUN0 1312      ERR25  4673      FUN    0275
DSKMAP 0372      EMRUN1 1316      ERR26  4731      FUNC   7730
DSKTAB 7600      EMSGT  1202      ERR27  4766      FUNCTI 0025
DSRR   6513      EMSKIP 1207      ERR28  4751      FUNTAB 1336
DTACHN 0020      EMSPY  1535      ERR29  5147      F0076  7742
DVRSTB 4232      EMSTLL 1335      ERR3   0256      F1400  7740
DVTYPT 4343      EMSTRT 1476      ERR3A  0300      GERMAN 0001
DWCA   6517      EMTAB  3427      ERR4   0327      GET    0135
D2     0540      EMTIME 1745      ERR4A  0334      GETCDF 1032
D6046A 1427      EMULAT 2000      ERR4B  0343      GETLEN 2056
D6046C 1436      EMVER  1200      ERR5   1146      GETNEW 1000
D6046X 1425      EMWAIT 1024      ERR5A  1167      GETN1  1013
E      2233      EMW1   1033      ERR5B  1160      GETN2  1036
EAE    0001      EMX    0733      ERR6   1016      GETQ   2721
EMACTI 1246      EMXNOP 0732      ERR7   2074      GIGAMX 0030
EMBG1  4070      EMXSKP 0731      ERR8   1330      GIGATB 3657
EMBG2  4120      EM00   0532      ERR9   5421      GO     1600
EMBG3  4150      EM00TB 3627      ERSTAT 2740      HALT   0010
EMBRED 0627      EM03   0534      ESCALT 1517      HALT0  1264
EMBSIN 1263      EM03TB 3637      EVENTF 0033      HELP   1753

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 218-2

HELP1  1755      KHINRM 1664      LSYSDR 7677      M3     0072
HLPCNT 1752      KHIOUT 2134      LZERO  3777      M4     0071
HNDTAB 3417      KHIRUN 1610      MAININ 1102      M400   0063
HNGCNT 0120      KHIST  2026      MAPEND 3464      M7     0070
HOLCNT 1600      KHISTP 1734      MAPIND 2010      M8BITS 7667
HOLE   1603      KHI0   1600      MAXDEV 0007      NAMLST 3465
HOLE1  1615      KHI11  1603      MAXNAM 0050      NEWLEN 0342
HOLE10 1641      KHI12  1720      MAXSLO 0033      NEWLNG 1145
HOLE11 1643      KHI21  2112      MHEAD  0136      NEWSAV 0314
HOLE12 1655      KHI3   1724      MIDI   0310      NEWSWP 1131
HOLE13 1660      KHI4   2056      MONAC  0023      NEWTSK 0027
HOLE14 1672      KHI5   2027      MONCDF 0605      NO     1000
HOLE2  1627      KHI51  2045      MONCIF 0675      NOCHCK 2314
HOLE20 1700      KHI8   2143      MONDUM 2031      NOTERM 0621
HOLE3  1632      KHLT   2426      MONERR 1114      NOTSYS 2274
HOLE7  1634      KHO    2403      MONER1 1113      NULL   0524
HOLLEN 1601      KHOBG1 4060      MONITO 0002      O      4000
HOLMAX 1602      KHOBG2 4110      MONLDF 0024      OFSET  1014
HRDERR 0004      KHOBG3 4140      MONPC  0022      ONDISK 0400
HRDINT 0413      KHO1   2404      MONRTN 0661      OO     0074
HRDLST 3222      KHO2   2400      MSEC   0144      OSIBLK 5437
HRD1   0417      KHTEST 2000      MSG0   2353      OSIBUF 5436
HRD2   0423      KHT1   2011      MSG10  2503      OSICNT 5513
HWTICK 0012      KHT2   2020      MSG11  2401      OSIFIL 5507
IBMPRO 0520      KK     0315      MSG2   2364      OSIFLD 0030
IBUFLD 0030      KKESCP 0337      MSG21  2512      OSIFRS 5402
IBUFLG 0001      KK1LST 0000      MSG22  2523      OSIFUN 5435
IHEAD  0134      KK2    0334      MSG23  2532      OSIHND 5413
INACTI 4000      K1TCBP 4044      MSG25  2545      OSILP  5444
INCFLD 0070      K10    1107      MSG26  2553      OSINUM 5512
INCORE 0100      LASTNM 3554      MSG27  2562      OSINXT 5402
INQUIR 0012      LCONFG 7767      MSG28  2574      OSIPCH 5472
INSOF  0270      LDATA  7757      MSG29  2605      OSIPNT 5511
INT    0177      LEMULA 7377      MSG3   2401      OSIREA 5427
INTAC  0031      LE8E   4205      MSG4   2411      OSIRST 5502
INTDEV 0004      LFPP   7775      MSG5   2425      OSITEM 5435
INTEXT 0557      LJOB   0125      MSG6   2441      OSIUSR 5510
INTFLD 0032      LLOCAL 7773      MSG7   2455      OS8    0040
INT1   0433      LMONIT 6777      MSG8   2401      OS8DAT 7666
IPRFLD 0030      LNGLST 7001      MSG9   2467      OS8IN  5400
ITAIL  0135      LNGTH  0237      MSG99  2614      OUT    2154
JSW    7746      LNKTCB 1064      MTAIL  0137      O1     0041
KB1    0005      LNKTC1 1067      MTQ    2661      O2     0016
KHCALL 2423      LNKTC2 1101      MTQ1   2715      O3     0064
KHECHO 1677      LOADPT 4160      MULTI8 0352      PARAM  0026
KHEXIT 2432      LONG   0200      MYCDF  0110      PASS1  0000
KHEXT  1451      LOOKUP 0002      MYCDIF 0113      PASS2  0001
KHEXT2 1456      LOOP   4760      MYCIF  0112      PASS3  0000
KHI    1612      LOOP1  4773      M1     0074      PDPTST 2065
KHIBG1 4050      LOOP2  4776      M10    0067      PIPNAM 2217
KHIBG2 4100      LPT    0004      M100   0066      POOLN  0010
KHIBG3 4130      LPTCHN 0030      M1000  0062      PRBOOT 1212
KHICON 2065      LPWRUP 7737      M2     0073      PRECE  1115
KHILP  1614      LRESMO 7577      M200   0065      PRECED 0000
KHINAM 1640      LSKIPS 5777      M215   0064      PRGBLK 1465

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 218-3

PRGBUF 1505      RESTM1 1525      SOFINT 0400      SYSCHN 0010
PRGB1  1506      RESTM2 1526      SOFSLO 0024      SYSCNT 2675
PRGB2  1540      RESTRT 0030      STACDF 1145      SYSCTR 3105
PRGLOP 1525      RESTR0 1206      STACIF 1146      SYSDO  3001
PROGER 0001      REST1  1215      STALL  0064      SYSDRV 3104
PROTOT 0001      RES1   1506      STALL0 1462      SYSDTV 3111
PSETL  2216      RES2   1515      STALL1 1474      SYSGET 3110
PTEMP0 1211      RETRN0 0630      START  1121      SYSHND 7607
PTEMP1 1200      RETRN1 0643      START1 1150      SYSI   0001
PTEMP2 1201      RETRY  2201      START2 1130      SYSINT 2734
PTEMP3 1202      RETURN 0040      STBLK  0236      SYSIN0 2677
PTEMP4 1203      RSAVE  1527      STBLK0 0325      SYSLOT 2736
PTEMP5 1204      RSTRT  4617      STBLK1 0255      SYSMAX 0010
PTEMP6 1205      RUN    0025      STBLK2 0277      SYSPUT 2671
PTEMP7 1206      SAM    7457      STLL0  1342      SYSQ   3200
PTEMP8 1207      SAVE   0223      STLL1  1361      SYSRW  3100
PTEMP9 1210      SAVLOP 0266      STOP   0034      SYSTAT 2733
PUT    0144      SCA    7441      STOP0  1155      SYSTEM 2672
PWRUP  0200      SCENTR 2632      STRT   1000      SYSTM  2673
PWR1   1047      SCL    7403      SUF    6274      SYSWAI 2663
PWR1A  1062      SETBAS 0123      SUSPND 0070      SYSWAT 2727
PWR10  1410      SETBLK 1044      SUSPN0 1200      SYSWC  3106
PWR12  1443      SETDMP 2000      SVLNGT 0125      SYS10  2710
PWR14  1627      SETEX  1545      SWAB   7431      SYS5   2636
PWR15  1656      SETEX1 1543      SWAP1  1122      SY3040 0001
PWR4   1220      SETEX2 1544      SWBA   7447      S8WAIT 1464
PWR4A  1234      SETFAK 1213      SWBLOK 1111      TAPE   0002
PWR5   1253      SETLEN 1455      SWPERR 0001      TAPEDC 4210
PWR5A  1313      SETMAP 2047      SWPER1 1116      TAPETB 3220
PWR5B  1315      SETMEM 2035      SWPER2 2322      TCBTAB 4000
PWR8   1403      SETMM1 2044      SWPER3 2331      TD8E   0001
PWR9   1406      SETNAM 4600      SWPER4 2342      TEMP   0000
P7612  1736      SETNM1 4605      SWPFIL 2227      TEMP1  0001
RBOOT  1712      SETPIP 2200      SWPIN  2027      TEMP2  0002
RELBLK 0054      SETSWP 1104      SWPLEN 1112      TEMP3  0003
RELCDF 2242      SETSW1 1125      SWPOUT 4002      TEMP4  0007
RELEAS 4000      SETTRP 1665      SWPTAB 3367      TEMP5  0020
RELESE 1704      SETUP  2761      SWP1   2064      TEMP6  0021
RELES1 1726      SIGHLT 1231      SWP1A  2252      TEMP7  0022
RELPA0 1400      SIGNAL 0004      SWP2   2261      TENTLN 0326
RELPA1 1430      SIGNL0 1231      SWP3   2270      TICK   2347
RELSUB 1735      SIGNL1 1255      SWP4   2273      TICK1  2367
RELSU2 1747      SINT   6254      SWP5   2302      TIME   0272
REQBLK 0050      SIZE0  6260      SWP6   2311      TIMEOU 0002
REQPA0 1300      SIZE1  6260      SY     2600      TIMER  0002
REQPA1 1312      SIZE2  3130      SYCLOS 2660      TKBNXT 1021
REQPA2 1314      SIZE3  3130      SYERCN 2735      TOTSLO 0037
RERTRN 0700      SIZE4  6260      SYEROR 2657      TRACK  0020
RESCNT 7336      SIZE5  6260      SYEXIT 2661      TRAP   0001
RESERV 0020      SIZE6  6260      SYFLD  2674      TRAPIN 0465
RESER0 1221      SIZE7  6260      SYIGNR 2723      TRAP0  0416
RESEXT 1524      SJOB   0126      SYLNGT 6260      TRPTAB 3522
RESNAM 2223      SKPDEV 0007      SYS    0003      TRTEMP 7035
RESRV  1500      SKPEND 0455      SYSCA  3107      TSKBLD 4616
RESTEM 7335      SKP0   0202      SYSCDF 3021      TSTJMP 1227

/M5.PA 9-SEP-80				  PAL8-V40A 26-JAN-86 PAGE 218-4

TT     0200      UBUFIN 0025      XACCDF 0105      
TTBACK 0311      UBUFOU 0030      XCOUNT 2661      
TTCHAR 0307      UCHAR  0056      XCURTS 0134      
TTCOUN 0310      UCHNL0 0035      XDSKTA 3523      
TTFCHR 0312      UCOUNT 0061      XJOB   0124      
TTFILL 0313      UCUR   0034      XLBLK  5146      
TTFLL  0250      UDTV   0012      XLDTV  5144      
TTOUT  0256      UECHO  0045      XLISTX 0000      
TTOU1  0301      UEND   0066      XL10   5067      
TTSAV  0306      UFLDS  0004      XL4    4621      
TTTAB  0241      UFLD0  0046      XL5    4633      
TTTMP  0314      UINST  0006      XL6    4672      
TTYMAX 0001      UKB    0057      XL75   4756      
TTY1   0006      UMQ    0001      XL9    4737      
TT0    0221      UNEXT  0065      XL90   4732      
TT1    0223      UNIT1  0001      XL91   5022      
TT1LST 0000      UNIT2  0003      XMONIT 0600      
TT2    0232      UNIT3  0003      XREADP 2721      
TT3    0237      UNIT4  0004      XTABLS 4646      
TXTOUT 2127      UNIT5  0005      XWRITE 2731      
TXTPNT 2153      UNIT6  0006      YCDF   4666      
TXT1   2135      UNIT7  0007      ZADDR  0022      
T1BACK 0210      UNUMB  0036      ZBLK   0021      
T1CHAR 0215      UPC    0003      ZBREAK 0122      
T1ESCP 0233      USC    0002      ZCNT   0007      
T1FILL 0010      USESY1 0001      ZDISPA 0123      
T1TCBP 4034      USESY4 0001      ZEROMS 7074      
T2BACK 0210      USESY5 0001      ZFSTEX 0040      
T2CHAR 0000      USESY6 0001      ZHRDIN 0121      
T2ESCP 0233      USESY7 0001      ZLENG  0002      
T2FILL 0000      USLOT  0062      ZMYCDF 0034      
T3BACK 0210      USR    7700      ZMYCDI 0036      
T3CHAR 0000      USRIN  0010      ZMYCIF 0035      
T3ESCP 0233      USROUT 0011      ZNAME  0001      
T3FILL 0000      USTAT  0000      ZNUM   0023      
T4BACK 0210      USW    0007      ZSOFIN 0037      
T4CHAR 0000      USYS1  2631      ZTEM1  0021      
T4ESCP 0233      USYS2  2631      ZTEM2  0022      
T4FILL 0000      USYS3  2631      ZTEM3  0023      
T5BACK 0210      USYS4  2631      ZTEM4  0024      
T5CHAR 0000      USYS5  2631      ZTEM5  0025      
T5ESCP 0233      USYS6  2631      ZTEM6  0026      
T5FILL 0000      USYS7  2631      ZTEM7  0027      
T6BACK 0210      UTEMP  0010      ZWC    0003      
T6CHAR 0000      UTEM2  0011      
T6ESCP 0233      UTTY   0060      
T6FILL 0000      UWRTR  0033      
T7BACK 0210      VERSHI 0267      
T7CHAR 0000      VERSLO 0302      
T7ESCP 0233      WAIT   0044      
T7FILL 0000      WAIT0  0677      
UAC    0005      WAIT1  0725      
UACCNT 0063      WAIT2  0735      
UASEM  0015      WAIT3  0736      
UASNAM 1136      X      0020      



ERRORS DETECTED: 0
LINKS GENERATED: 0